所以,我必须创建一个谓词,解压缩(L,R,P),其中P是一对列表(例如:P = [[1,2],[3,4]]。L必须是一个包含每对中第一个元素的新列表,而R是一个包含每对中第二个元素的新列表。
这就是我所拥有的:
unzip([],[],[]).
unzip([H1|T1],[H2|T2],[HL,HR|T]) :-
H1 = HL,
H2 = HR,
unzip(T1,T2,T).
除非对数是奇数,否则这是有效的。我不知道这是怎么回事,有什么建议吗?
编辑:想出来。如果有人好奇,这是我的解决方案:unzip([],[],[]).
unzip([H1|T1],[H2|T2],[[HL,HR]|T]) :-
H1 = HL,
H2 = HR,
unzip(T1,T2,T).
答案 0 :(得分:5)
你的解决方案是正确的,但你可以而且应该在头脑中使用统一:
unzip([], [], []).
unzip([L|Ls], [R|Rs], [[L,R]|Ps]) :- unzip(Ls, Rs, Ps).