2013-05-08 56 views
2

所以,我必須創建一個謂詞,解壓縮(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). 
+3

隨意使這是一個答案,並接受它。你以後可能最終會幫助別人。 – joneshf 2013-05-08 01:30:21

+2

請注意,你寫的也是'zip' – false 2014-01-24 15:41:14

回答

5

你的解決方案是正確的,但你可以,也應該在頭部使用統一:

unzip([], [], []). 
unzip([L|Ls], [R|Rs], [[L,R]|Ps]) :- unzip(Ls, Rs, Ps).