2

ペアのリストがあります: [{1, a}, {2, b}, {3, c}, {4, d}]

各ペアの 2 番目の要素を抽出して別のリストにするにはどうすればよいですか?

したがって: [a,b,c,d]

申し訳ありませんが、私はプロローグが初めてで、答えを探しましたが、見つかりませんでした。

4

2 に答える 2

3

あなたが示したのはペアのリストではありません。これは:

[1-a, 2-b, 3-c, 4-d].

このリストを使用すると、次のことができます。

?- pairs_values([1-a, 2-b, 3-c, 4-d], V).
V = [a, b, c, d].

?- pairs_keys([1-a, 2-b, 3-c, 4-d], K).
K = [1, 2, 3, 4].

そして、それを行う述語は明示的に次のとおりです。

seconds([], []).
seconds([_A-B|Pairs], [B|Secs]) :-
    seconds(Pairs, Secs).

もちろん、あなたが主張するなら:

secs([], []).
secs([{_A, B}|Pairs], [B|Secs]) :-
    secs(Pairs, Secs).

ただし、何が最適かは自分で決めることができますが、次の点に注意してください。

?- write_canonical({1,a}).
{}(','(1,a))
true.

?- write_canonical(1-a).
-(1,a)
true.

とりわけ、Prologに関する優れた資料:

  • Amzi Inc. プロローグの冒険 (web)
  • 今すぐプロローグを学ぼう!(ウェブ)
  • 「The Art of Prolog」、スターリングとシャピロ (本)。
于 2013-11-14T12:27:22.753 に答える