gpt4 book ai didi

prolog - 仅查找不在两个列表中的唯一元素

转载 作者:行者123 更新时间:2023-12-04 06:25:59 25 4
gpt4 key购买 nike

计算两个列表的对称差异并返回不包含重复项的第三个列表。

显示预期结果的示例查询:

?- join([a,b,p,l,a,f],[q,a,z,x,l],Rs).
Rs = [b,p,f,q,z,x].

我目前有这个代码:
join([],List,List).
join([H|T],List,[H|Result]) :-
not(member(H,List)),
join(T,List,Result).
join([H|T],Y,Z) :-
join(T,Y,Z).

它可以找到所有不重复的元素,但将它们全部放在第二个列表中作为头部。

我怎样才能做到这样,第二个列表也会检查重复的元素,只输出那些不重复的元素?

最佳答案

您描述的“非交集”似乎是两个集合的对称差,这是它们(不对称)集合差的并集。可以使用 SWI-Prolog 计算集差subtract/3谓词或this problem的解.

可以通过 append/3 获得联合。其次是 sort/2 ,它负责处理重复项。

关于prolog - 仅查找不在两个列表中的唯一元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6035666/

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