【发布时间】:2015-10-21 12:44:54
【问题描述】:
我在从 prolog 的列表中删除值时遇到了一些问题。 我有一个颜色列表,我想向其中添加一个颜色列表,并保留所有没有重复的值并删除其余的值。
[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]
【问题讨论】:
标签: list prolog prolog-dif