私は Prolog が初めてで、結果を取得する方法がわかりません。
リスト内のペアの可能な組み合わせを計算したい。
例: 入力がリスト [a,b,c] の場合、(a,b)、(a,c)、(b,c) のペアを取得したい。各ペアをリストとして保存したい。
どんな助けでも大歓迎です。
ダニエルが指摘したように、自分で解決策を見つけようとする必要があります。
1 つの findall/3 だけで結果を取得でき、append/3 を使用してペアの最初の要素と残りの要素をまとめ、ペアの 2 番目の要素を選択するには単一の member/2 で十分です。
もちろん、実際の解決策ははるかに冗長ではなく、より明確です。組み立ててみると、とても勉強になります...
all_pairs(L, R) :-
findall((A,B), (..., ...), R).
収量
?- all_pairs([a,b,c],L).
L = [ (a, b), (a, c), (b, c)].
編集詳細を修正するだけです。
...((A,B), (append(_, [A|T], L), ...), R).
最初の要素の両方を文脈的に生成し、 B を取得する方法を知っています。
[A,B] は、質問で必要な (A,B) とは異なることに注意してください。