プロローグのリストから値を削除するのに問題があります。色のリストがあり、それに色のリストを追加し、重複していないすべての値を保持して残りを削除したいと考えています。
[green, red, blue, purple, yellow, brown, orange, black, purple]
紫がこのリストに 2 回表示されているので、両方とも削除したいと思います。これは私が返したいリストです。
[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]