如果你有check_entries(X,Y)的定义,有没有人知道以递归方式检查两个列表的最佳方法是什么,并迭代这些列表并比较每个元素以查看它们是否不同?我知道你会在某处使用= \ =运算符,但我不知道还能做什么...
请帮助,谢谢。递归是我的一个弱点: - (。
更具体地说,我想知道的是如何检查两个数字列表L1,L2在每个索引处都是不同的。我也想知道如何使用= \ =来检查不等式。
答案 0 :(得分:0)
递归是没有必要的:
all_different(L1, L2) :- forall(member(X, L1), \+ memberchk(X, L2)).
编辑:的确,您的问题实际上是确保如果您逐个匹配列表,则它们会有所不同。所以这两者会有所不同:[1,2,1]
和[2,1,2]
。
我仍然不会为递归而烦恼,不过我想你可以:
all_different(L1, L2) :- maplist(=\=, L1, L2).