所以,我必须创建一个谓词,解压缩(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).
Run Code Online (Sandbox Code Playgroud)
这是有效的,除非对的数量是奇数.我不知道这是怎么回事,有什么建议吗?
编辑:想出来.如果有人好奇,这是我的解决方案:
unzip([],[],[]).
unzip([H1|T1],[H2|T2],[[HL,HR]|T]) :-
H1 = HL,
H2 = HR,
unzip(T1,T2,T).
Run Code Online (Sandbox Code Playgroud)
小智 5
你的解决方案是正确的,但你可以而且应该在头脑中使用统一:
unzip([], [], []).
unzip([L|Ls], [R|Rs], [[L,R]|Ps]) :- unzip(Ls, Rs, Ps).
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
396 次 |
| 最近记录: |