小编Mar*_*ijn的帖子

如何从SWI-Prolog中的列表中删除重复项?

所以我需要编写一个谓词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

8
推荐指数
3
解决办法
2万
查看次数

标签 统计

prolog ×1