到目前为止,我已经编写了这段代码(我在Stack Overflow中找到了它,并做了一些改动)
create_option
但这与我想要的完全相反。
例如,预期会得到这些结果。
2
但是,它给出了
unique(M,List) :-
append(X,Y,List),
member(M,X),
member(M,Y).
有没有一种方法可以修改我的代码以提供所需的结果?
答案 0 :(得分:0)
您的代码有效地说:“如果List可以分为X和Y两部分,并且X和Y都存在M,则M在List中是唯一的。”这是一种非常聪明的方法,与您想要的相反。
这是询问X在List中是否唯一的另一种方式:如果我从List中获取X,则X不再在List中。您可以像这样将其转换为Prolog:
unique(X, List) :-
select(X, List, ListWithoutX),
\+ memberchk(X, ListWithoutX).