-1
我有一個列表,其中包含2個列表:第一個列表和第二個列表相同。我想列出一個包含三個元素的元組的列表。這是我的初步名單:序言列表中的列表
[ [ [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