gpt4 book ai didi

list - 删除 prolog 列表中的值和该值的所有重复项

转载 作者:行者123 更新时间:2023-12-04 23:42:38 24 4
gpt4 key购买 nike

我在从 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]

最佳答案

简单的方法......单线:

singletons(Xs,Zs) :-
findall( X , ( append(P,[X|S],Xs), \+member(X,P), \+member(X,S) ) , Zs )
.

关于list - 删除 prolog 列表中的值和该值的所有重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33259691/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com