gpt4 book ai didi

Prolog:确定两个列表的交集是否为空

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

我正在尝试找出如何确定 Prolog 中两个列表的交集是否为空。据我了解,这是他们没有共同点。我是 Prolog 的新手(截至昨晚)。任何帮助是极大的赞赏。

这是我的尝试:

% returns true if head is not a member of List?
intersection([],_).
intersection([Head|Tail],List) :-
\+ member(Head,List),
intersection(Tail,List).

第二次尝试:

?- intersect([A,B,C,D],[E,F,G,H]).

intersect(L1,L2) :-
intersection(L1,L2,[]).

mbratch 的解决方案解决了这个问题。

解决方法:

?-intersect([a,b,c,d],[e,f,g,h]).

intersect(L1,L2):-
intersection(L1,L2,[]).

最佳答案

与计算两个列表的交集相比,一个更有效的解决方案(通常)是在找到公共(public)元素后立即失败:

empty_intersection(List1, List2) :-
\+ (member(Element, List1), member(Element, List2)).

关于Prolog:确定两个列表的交集是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22763414/

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