我想知道如何编写谓词/1,以确定给定列表是否具有重复项,还是没有预定义/内置谓词是唯一的。
myFunc(a,b,c,d) =真
myFunc(a,b,a,d) = false
到目前为止,我得到的是:
myFunc([X|Y]) :- helpFunc(Y,X).
myFunc([]).
helpFunc([],_).
helpFunc([Y|X], Y) :- helpFunc(X,Y).
只有在列表中有连续的重复元素时,才会返回true。
例如。
myFunc(1,3,a,4,b) = false ->应返回true
myFunc(1,3,a,3,b) = false ->应返回false
--
myFunc(3,3,3,3) =真
有什么想法吗?
发布于 2018-03-29 10:54:44
一个简单的方法是:
duplicate(List):-
append(X,Y,List),
member(M,X),
member(M,Y).
如果可以将列表拆分为两个列表,并且这两个列表的成员是相同的,则列表具有重复的元素。
由于prolog没有函数,所以最好使用声明性名称。
我使用了内置成员/2和追加/3,但如果您坚持,您可以轻松地查找这些定义。
https://stackoverflow.com/questions/49553804
复制相似问题