gpt4 book ai didi

2 个列表列表的 Prolog 交集

转载 作者:行者123 更新时间:2023-12-02 06:42:35 30 4
gpt4 key购买 nike

我正在尝试找到两个不同列表列表的交集。换句话说,找出 list1 中的所有列表是否与列表 2 中的任何列表相交。

列表1:

[[1,4],[1,6],[6,8],[8,10]]

列表2:

 [[], [10], [8], [8, 10], [6], [6, 10], [6, 8], [6, 8, 10]]

我想在list2中找到一个与list1的所有项目相交的项目。解决方案是[4,6,8]

我该怎么做?

最佳答案

一个非常简单的实现如下

intersect(L, M, E) :-
member(E, M),
maplist(intersect_(E), L).

intersect_(L, M) :-
member(E, L),
member(E, M).

示例查询:

?- intersect([[1,4],[1,6],[6,8],[8,10]], [[], [10], [8], [8, 10], [6], [6, 10], [6, 8], [6, 8, 10]], E).
false.

?- intersect([[1,4],[1,6],[6,8],[8,10]], [[], [10], [8], [8, 10], [6], [6, 10], [6, 8], [6, 8, 10], [4,6,8]], E).
E = [4, 6, 8] ;
E = [4, 6, 8] ; % This succeeds twice because the list [6,8] has two ways of satisfying the predicate
false.

关于2 个列表列表的 Prolog 交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49105788/

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