Prolog列表组合
我正在尝试编写一个prolog代码,它将获取一个列表并返回该列表中每个元素的所有对。例如:Prolog列表组合,prolog,Prolog,我正在尝试编写一个prolog代码,它将获取一个列表并返回该列表中每个元素的所有对。例如: X = 1, Y = 2, Zs = [3] ; X = 1, Y = 3, Zs = [2] ; X = 2, Y = 1, Zs = [3] ; X = 2, Y = 3, Zs = [1] ; X = 3, Y = 1, Zs = [2] ; X = 3, Y = 2, Zs = [3] 到目前为止,我能够正常运行第三行,但无法获得其余的输出。我的代码是: se
X = 1, Y = 2, Zs = [3] ;
X = 1, Y = 3, Zs = [2] ;
X = 2, Y = 1, Zs = [3] ;
X = 2, Y = 3, Zs = [1] ;
X = 3, Y = 1, Zs = [2] ;
X = 3, Y = 2, Zs = [3]
到目前为止,我能够正常运行第三行,但无法获得其余的输出。我的代码是:
select_pair(X,Y,[X|Xs],Zs):- select(Y,Xs,Zs).
select_pair(X,Y,[H|Z1],[H|Z2]):- select_pair(X,Y,Z1,Z2).
换句话说,您想要实现的是:
- 从输入列表中选取任意X
- 从输入列表中选取与X不同的Y
- X和Y以外的元素以Zs表示
select_pair(X, Y, L, Zs) :-
select(X, L, Xs),
select(Y, Xs, Zs).
首先,我们从输入L中选择X。从剩余的元素Xs中选择Y。然后,剩余的元素是Zs。您能显示应该生成给定输出的示例输入吗?我不太明白你所说的“返回每个元素的所有对”是什么意思。这里有一个:select_pair(X,Y,[1,2,3],Zs)。X=3,Y=2,Zs=[3]示例输出是打字错误吗?这没有道理。