List prolog中列表中数字的唯一性
到目前为止,我已经编写了这段代码(我在这里的Stack Overflow中找到了这段代码,并做了一些修改) 但这与我想要的正好相反 例如,预计将给出这些结果List prolog中列表中数字的唯一性,list,prolog,unique,List,Prolog,Unique,到目前为止,我已经编写了这段代码(我在这里的Stack Overflow中找到了这段代码,并做了一些修改) 但这与我想要的正好相反 例如,预计将给出这些结果 ?- unique(1,[1,2,3]). yes ?- unique(1,[1,2,3,1]). no 但相反,它给了我们 ?- unique(1,[1,2,3]). no ?- unique(1,[1,2,3,1]). yes 有没有一种方法可以让我修改代码以获得所需的结果?您的代码有效地说“如果列表可以分为X和Y两部分,并且M
?- unique(1,[1,2,3]).
yes
?- unique(1,[1,2,3,1]).
no
但相反,它给了我们
?- unique(1,[1,2,3]).
no
?- unique(1,[1,2,3,1]).
yes
有没有一种方法可以让我修改代码以获得所需的结果?您的代码有效地说“如果列表可以分为X和Y两部分,并且M在X和Y中都存在,那么M在列表中是唯一的。”这是一种非常聪明的方法,与您想要的正好相反 这里有另一种询问X在列表中是否唯一的方法:若我从列表中获取X,则X不再在列表中。您可以将其转换为序言,如下所示:
unique(X, List) :-
select(X, List, ListWithoutX),
\+ memberchk(X, ListWithoutX).
unique(X, List) :-
select(X, List, ListWithoutX),
\+ memberchk(X, ListWithoutX).