所以我需要编写一个谓词remove_duplicates/2来删除给定列表中的重复元素.例如:
?- remove_duplicates([a,a,b,c,c], List).
List = [a,b,c]
Yes
请记住,我只学习SWI-Prolog两天,只了解Prolog的基础知识.这就是我现在所拥有的:
remove_duplicates([H | T], List) :-
member(H, T),
append(T, [], List1).
这适用于列表,[a,a,b,c]但不适用于尾部中两个元素相同的列表.我想我不得不将Head删除到临时列表,创建一个新的Head并重复谓词.我不知道该怎么做.此外,当Head不在尾部时,例如列表之类的[a,b,b,c,],终端只是说False,因为member(H, T)不是真的.
有任何想法吗?
prolog ×1