-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