我需要生成2个列表的组合,每个列表包含4个元素。
例如,list([1,2,3,4],[x,y,w,z],L).
应返回
L = [(1,x),(1,y),(1,w),(1,z),(2,x),(2,y)|...]
作为答案。
这是我的代码:
comb([],[],[]).
comb([H1|_],[H2|_],[H1|H2]).
comb([_|T1],[_|T2],L):- comb(T1,T2,L).
...并打印出来:
L = [1|y] ;
L = [2|x] ;
L = [].
......这不是正确的答案。有人可以帮我解决这个问题吗?
答案 0 :(得分:2)
您的问题可以表达为:
查找所有对
(X, Y)
,使X
成为List1
的成员,Y1
成为List2
的成员。
这可以直接翻译成Prolog:
list_pairs(List1, List2, Pairs) :-
findall((X,Y), (member(X, List1), member(Y, List2)), Pairs).