我在从序言中的列表中删除值时遇到了一些麻烦。我有一个颜色列表,我想向其中添加一个颜色列表,并保留所有没有重复的值并删除其余的值。
[green, red, blue, purple, yellow, brown, orange, black, purple]
所以紫色在这个列表中出现了两次,我想删除它们。这是我想要返回的列表。
[green, red, blue, yellow, brown, orange, black]
我目前有这个来删除所有重复的,但我不能把两个紫色都去掉。
mymember(X,[H|_]) :- X==H,!.
mymember(X,[_|T]) :- mymember(X,T).
not(A) :- \+ call(A).
set([],[]).
set([Head|Tail],[Head|Out]) :-
not(mymember(Head,Tail)),
set(Tail, Out).
set([Head|Tail],Out) :-
mymember(Head,Tail),
set(Tail, Out).
这是我现在得到的结果:
[green, red, blue, yellow, brown, orange, black, purple]