我必须通过以下方式在列表中找到所有可能的对:
给定一个列表 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).