gpt4 book ai didi

Prolog:比较2个列表并找出第一个列表中的至少一个成员是否存在于另一个列表中

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

为了学习更多关于 prolog 的知识(以及为了解决我的作业),我遇到了一种情况,我需要比较 2 个列表并找出是否有 AT LEAST ONE 元素匹配...
这是我想要做的一个例子:

?-match([a,b,c],[x,y,z]).
no.

?-match([a,b,c],[x,y,b]).
yes.

我目前的解决方案:

compare_list([],[]).
compare_list([],_).
compare_list([L1Head|L1Tail],List2):-
member(L1Head,List2),
compare_list(L1Tail,List2).

但是当 List1 的所有成员都出现在 List2 中时,此解决方案给出了 true!

拜托大家,不要以为我在作弊,问题要复杂得多,我只是被困在这一点上,需要帮助才能摆脱这个棘手的角落……否则我已经完成了整个作业自己做!

最佳答案

你的问题可以使用更简单的内置函数来解决

match(L1,L2) :- member(E,L1),member(E,L2). % full join

如果您真的只对“至少一个”解决方案感兴趣,请添加讨厌的剪辑

match(L1,L2) :- member(E,L1),memberchk(E,L2),!. % really, just the first!

关于Prolog:比较2个列表并找出第一个列表中的至少一个成员是否存在于另一个列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20532582/

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