如何在Prolog中编写谓词,其中包含3个列表,L1
是包含常量和变量的列表,L2
包含常量,L3
是一些列表。如果用第二个列表的相应元素替换的第一个列表的变量等于第三个列表,则谓词应返回true。
如果L1_i
是变量,则需要用L2_i
替换,然后如果它必须等于L3_i
。
如何做到这一点?
感谢。
答案 0 :(得分:0)
统一(即=/2
)实际上是这样做的。
?- [X, a, Y, b, Z] = [1, A, 2, B, 3].
X = 1,
Y = 2,
Z = 3,
A = a,
B = b.
哦,但你需要三个清单:
?- [X,a,Y,b,Z] = [1,A,2,B,3], [1,A,2,B,3] = [1,a,2,b,3].
X = 1,
Y = 2,
Z = 3,
A = a,
B = b.
抱歉,让它看起来更像你的作业:
?- L1 = [X,a,Y,b,Z], L2 = [1,A,2,B,3], L3 = [1,a,2,b,3], L1 = L2, L2 = L3.
L1 = [1, a, 2, b, 3],
X = 1,
Y = 2,
Z = 3,
L2 = [1, a, 2, b, 3],
A = a,
B = b,
L3 = [1, a, 2, b, 3].
:)