我在 Prolog 中遇到了这个主题的问题。问题是我想计算出现在列表中的重复元素的数量,并且我还想在另一个列表中填充 1,对于重复元素的每次出现,如果不重复,则为 0,例如
我有一个这样的列表:[420,325,420,582,135,430,582],结果应该是 [1,0,1,1,0,0,1]。
我尝试了一些代码片段,这让我发疯了。
我试过的最后一个代码是:
count_duplicates([],[]).
count_duplicates([Head|Tail],[1|LS]):-
member(Head,Tail),
count_duplicates([Tail|Head],LS).
count_duplicates([Head|Tail],[0|LS]):-
\+ member(Head,Tail),
count_duplicates([Tail|Head],LS).
这个谓词接收一个列表并且必须生成结果列表
提前致谢