prolog - 列表列表中的组合 Prolog

标签 prolog combinations

我需要在列表列表中找到组合。 例如给出以下列表,

列表 = [[1, 2], [1, 2, 3]]

这些应该是输出,

梳子 = [[1,1],[1,2],[1,3],[2,1],[2,2],[2,3]]

另一个例子:

列表 = [[1,2],[1,2],[1,2,3]]

梳子 = [[1,1,1],[1,1,2],[1,1,3],[1,2,1],[1,2,2],[1,2 ,3]...等]

我知道如何对具有两个子列表的列表执行此操作,但它需要适用于任意数量的子列表。

我是序言新手,请帮忙。

最佳答案

try([],[]).
try([L|Ls],[M|Ms]):-
    member(M,L),
    try(Ls,Ms).

all(L,All) :- findall(M, try(L,M), All).    

try 返回一个由第一个参数的子列表的元素组成的列表。 all 查找所有此类列表。

关于prolog - 列表列表中的组合 Prolog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10239662/

相关文章:

data-structures - Prolog 中的自定义数据结构语法

从n中生成k个元素的 "anti-Gray"按需组合的算法

r - 添加条件以在 R 中扩展网格?

Python组合

Prolog 问题 - 如何生成给定长度的子列表

java - gnuprologjava问题

Prolog - 域错误 : 'acyclic_term ' expected

list - 简单的序言程序。出现错误: >/2: Arguments are not sufficiently instantiated

vba - Excel VBA 代码 - 有限制的组合

arrays - 寻找具有最小乘积的三个项目的 K 个组合