如何在Prolog中以递归方式检查两个列表中的每个元素是否不同?

时间:2016-12-15 02:46:57

标签: list recursion prolog comparison

如果你有check_entries(X,Y)的定义,有没有人知道以递归方式检查两个列表的最佳方法是什么,并迭代这些列表并比较每个元素以查看它们是否不同?我知道你会在某处使用= \ =运算符,但我不知道还能做什么...

请帮助,谢谢。递归是我的一个弱点: - (。

更具体地说,我想知道的是如何检查两个数字列表L1,L2在每个索引处都是不同的。我也想知道如何使用= \ =来检查不等式。

1 个答案:

答案 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).