0

私は Prolog が初めてで、結果を取得する方法がわかりません。

リスト内のペアの可能な組み合わせを計算したい。

例: 入力がリスト [a,b,c] の場合、(a,b)、(a,c)、(b,c) のペアを取得したい。各ペアをリストとして保存したい。

どんな助けでも大歓迎です。

4

1 に答える 1

1

ダニエルが指摘したように、自分で解決策を見つけようとする必要があります。

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) とは異なることに注意してください。

于 2013-03-13T20:59:03.193 に答える