我正在尝试编写一个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]
到目前为止,我能够升级到第三行并且无法获得剩余的输出。我的代码是:
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).
答案 0 :(得分:2)
用语言来说,你想要达到的目标是:
这很容易转化为序言谓词:
select_pair(X, Y, L, Zs) :-
select(X, L, Xs),
select(Y, Xs, Zs).
首先我们从输入L中选择X.从剩余的元素Xs中我们选择Y.此后,剩余的元素是Zs。