gpt4 book ai didi

prolog - 集合相等

转载 作者:行者123 更新时间:2023-12-02 07:10:02 24 4
gpt4 key购买 nike

任何人都可以帮助我完成以下任务:我需要定义一个谓词 eq_set,如果集合 S1S2 在数字方面相等,则该谓词会成功他们的元素。

但只有当它们的数量和顺序完全相同时才有效。我想创建一个显示所有品种且不考虑顺序的代码。你能帮我一下吗?

我写道:

eq_set([],[]).
eq_set([H|T],[H|T1]) :-
eq_set(T,T1).

但只有当它们的数量和顺序完全相同时才有效。我想创建一个显示所有品种且不考虑顺序的代码。

我对该作业最接近的翻译是保加利亚语:“定义谓词 eq_set,如果集合 (S1, S2) 重合,则该谓词成功。

最佳答案

您将它们称为“集合”,但您使用的数据结构是列表。最简单的方法是对两个列表进行排序:

eq_set(A, B) :-
% prerequisites: A and B are lists without duplicates
sort(A, S),
sort(B, S).

如果您想要更复杂的东西(出于某种原因),您需要更具体。

按照这个定义:

?- eq_set([a,b,c], [a,b]).
false. % OK

?- eq_set([a,b,c], [a,b,c]).
true. % OK

?- eq_set([a,c,b], [a,b,c]).
true. % OK

?- eq_set([a,a,b], [a,b,b]).
true. % Not sure....

关于prolog - 集合相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56718545/

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