0

Prolog怎么写谓词呢,它需要3个列表,L1是一个包含常量和变量的列表,L2包含常量,L3是一个some列表。如果用第二个列表的相应元素替换的第一个列表的变量等于第三个列表,则谓词应该返回 true。

就像 ifL1_i是一个变量,它需要用 替换L2_i,然后如果它需要等于L3_i

如何才能做到这一点?

谢谢。

4

1 回答 1

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].

:)

于 2013-04-01T20:46:32.363 回答