私は2つのリストを含むリストを持っています:最初のリストはリストのリストであり、2番目のリストは同じものです。私は、3つの要素を持つタプルを含むリストのリストを作成したいと思います。これは私の最初のリストである:プロローグ内のリストのリスト
[ [ [1 2 3 4 a], [aa, bb], R1], [[ 1 3 4 5 b], [X, Y] , R2]] , [anything]]
私はこのリストを取得したい:
[[a, [aa, bb], R1], [b, [x, y], R2]]
どのように私は私のプロローグでは、上記のリストを返すように述語を実装することができますか?私はこれを試しました:
get_game_tiles([[[_,_,_,_,I],[X,Y],R]|Tail], [[Elem1,Elem2|Tail]]) :-
findall(S,
( member(S,[[[_,_,_,_,S], [X,Y], R], [[_,[_]]]]), S = I),
[[Elem1,_|_]]),
findall([A,B],
( member([A,B] ,[[[_,_,_,_,S], [A,B], R], [[_,[_]]]]),
A = X, B = Y
) ,
[[_,Elem2|_]]),
findall(Z,
( member(Z ,[[[_,_,_,_,S], [A,B], Z], [[_,[_]]]]),
Z = R
),
[[_,_|Tail]]).
Prologには*機能*がありません。 *述語*は同じものではありません。 '[1 2 3 4 a]'と '[1 2 3 4 5 b]'は有効なリストではありません。また、あなたが試したことを示して、より具体的な質問をしてください。 – lurker
変数**は必ず開始してください。大文字 – CapelliC
'(1 2 3 4 a)'を 'a'と' [1 3 4 5 b] 'にマップするための規則についてはまだ説明が必要です'b'。最後の要素を選択するだけですか? '[aa、bb]'と '[X、Y]'の扱いを異なるものにするためには何が必要ですか?あなたがしようとしていることは、少し不明です。ソリューションを試してみるとどうなりますか(結果はどうなりますか) – lurker