1
我必须找到列表中的所有可能的对,通过以下方式:巴黎之列表的列表Prolog的
给出一个列表L = [[1,1,1],[1,2,1] ,[2,1,1],[2,2,1],[3,1,1],[3,2,1]]
[1,1,1]具有对[1,1 ],[1,1],[1,1]
[1,2,1]具有对[1,2],[2,1],因为[1,1]已经发现
[2,1,1]有成对[2,1],[2,1],因为它们位于不同的位置,所以它们不是相同的
[2,2,1]具有对[2,2]的另一对已发现
[3,1,1]具有双[3.1] [3,1]
[3, 2,1]有双[3,2]
我有一个谓词,使所有可能的配对,但我不这样做。我对prolog很陌生,我不知道还有什么要做。这是我有:
它还返回创建
do_pairs(L,PL,N):- do_pairs1(L,[],PL),len(PL,N).
do_pairs1([],L,L) :- !.
do_pairs1([H|T],Pairs,PL):-
pairs(H,P),
do_pairs1(T,[P|Pairs],PL)
.
pairs(L,Pairs):- findall({I-J}, (member(I,L), member(J,L),I=<J), Pairs).