2
我想写一个谓词,遵循一些简单的条件。它应该包含2个列表和2个变量,并且如果第一个变量位于第一个列表中的相同位置,并且第二个变量位于第二个列表中,则应该返回true。我做了一部分,但我努力争取其他部分的工作。这是我迄今为止所做的,但是在某种程度上,我需要检查列表中剩下的职位。在Prolog中的列表位置
position([A|_],[B|_],Var1,Var2):-
A = Var1,
B = Var2.
我想例如能够这样写:提前
position([x,y,z],[1,2,3],z,3).
true .
感谢。
编辑
我已经试过,我写的东西继续给我假的,我认为这会工作,但它不...:
position([A|C],[B|D],Var1,Var2):-
A = Var1,
B = Var2,
position(C,D,Var1,Var2).
不知道为什么这不工作..
这似乎去工作,但我碰到了一个“问题”。我试图写位置([1],[x,y,z],Var1,Var2)。我期望得到答案Var1 = 1,Var2 = x;虚假的,但我只是'虚假'...任何想法? – Fjodor 2014-10-13 19:41:59
该解决方案(和隐含的语义)要求您使用统一而不是平等。只需用'='运算符替换'=='运算符即可。 – 2014-10-13 20:27:15