次の方法で、リスト内のすべての可能なペアを見つける必要があります。
与えられたリスト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,1]はすでに見つかっているため、[1,2,1]にはペア[1,2]、[2,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]があります
私はすべての可能なペアを作る述語を持っていますが、私はそれをこのようにはしません。私はプロローグに不慣れで、他に何をすべきかわかりません。これは私が持っているものです:
また、作成されたペアの数も返します
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).