2016-09-27 40 views
0

我擅長JAVA,現在我正在學習Prolog,它非常困難,我需要一些幫助......謝謝。 ABs的每個元素是A-B形式的項,其中A是As的對應元素,B是Bs的對應元素。prolog-two列表,對相應元素進行操作

zip(As,Bs,ABs)

一些例子:

zip([1,2,3,4],[a,b,c,d],L). 
    L=[1-a,2-b,3-c,4-d]. 

zip(X,Y,[1-a,2-b,3-c]). 
    X=[1,2,3],Y=[a,b,c] 
zip([1,2,3,4],[a,b,c],L). 
fail. 

有人可以幫助我。謝謝你..

我的實現:

zip(As,Bs,ABs) :- 
    append(X,XS,As), 
    append(Y,YS,Bs), 

這是我已經失去了done..im ..

+1

'合併(A,B,AB).'然後'MAPLIST(結合,如,英國BS,ABS).' – lurker

回答

1

這不是很有效地使用附加/ 3。你可以簡單地寫類似:

zip([],[],[]). 
zip([H|T],[H1|T1],[H-H1|T2]):-zip(T,T1,T2). 

一些例子:

?- zip([1,2,3,4],[a,b,c,d],L). 
L = [1-a, 2-b, 3-c, 4-d]. 

?- zip(X,Y,[1-a,2-b,3-c]). 
X = [1, 2, 3], 
Y = [a, b, c]. 

?- zip([1,2,3,4],[a,b,c],L). 
false. 
+0

感謝你這麼多。幫助很多!我可能會有一些想法。 – newlearner

+0

我剛剛做到了,我想我做到了。反正我不熟悉這個功能。再次感謝你; P – newlearner

相關問題