1
私は検索してきましたが、私の質問に正しい答えが見つかりません。Prolog findall述語のリスト
問題がある:
述語
initial_estates([rb(1,1),rb(2,2),rb(3,5)]).
私は私のRBのすべての第2項のリストを取得するためのfindAll使用したいです。
この例のように、[1,2,5]
誰でも
私は検索してきましたが、私の質問に正しい答えが見つかりません。Prolog findall述語のリスト
問題がある:
述語
initial_estates([rb(1,1),rb(2,2),rb(3,5)]).
私は私のRBのすべての第2項のリストを取得するためのfindAll使用したいです。
この例のように、[1,2,5]
誰でも
あなたがリストを使用することができますすることができます:対話的にペアのすべての値がリストに/ 2をrbは見つけるために、メンバー/ 2:
?- initial_estates(L),member(rb(X,Y),L).
L = [rb(1,1),rb(2,2),rb(3,5)],
X = Y = 1 ? ;
L = [rb(1,1),rb(2,2),rb(3,5)],
X = Y = 2 ? ;
L = [rb(1,1),rb(2,2),rb(3,5)],
X = 3,
Y = 5 ? ;
no
そして、もう一つのリスト(Res
)に全ての第2の要素(Y
)を取得することのfindAllに基づく:
?- findall(Y,(initial_estates(L),member(rb(X,Y),L)),Res).
Res = [1,2,5]
その後、
rb_2nd(rb(X,Y),Y).
して適用し使用します。:
また、あなたはまた、2番目の引数は最初の引数であるペアの2番目の要素であると説明している、/ 2をrb_2nd言う述語を書くことができmaplist/3:first_estates/1で記述されたリストにその関係を適用する:findall/3を使用したクエリよりも後者が読みやすくなることがわかります。
ありがとうございました!出来た – FredCC