2011-05-15 59 views
2

如何合併兩個這樣的列表?序言列表合併問題?

[a,b,c] 

[1,2,3] 

,我想使這個名單

[a=1,b=2,c=3]. 

我怎樣才能做到這一點? (我使用swi序言)

Thanks for your answers. I have a question about it. I write 

start:- consult('tennis.pl'), 
      see('tennis.pl'), 
      repeat, 
      read(A), 
      A=..List, 
      (A\=end_of_file-> 
      (A\=end_of_file,member('attributes',List)-> 
      delete(List,'attributes',NewList2);true), 
      (A\=end_of_file,member('data',List)-> 
      delete(List,'data',NewList);true), 
      merge(NewList2,NewList,Try), 
      write(Try),nl;true), 
      A=end_of_file,!, 

      seen. 


[outlook=_G40,temperature=_G49,humidity=_G58,wind=_G67,play_tennis=_G76] 
[_G40=sunny,_G49=hot,_G58=high,_G67=weak,_G76=no] 
[_G40=sunny,_G49=hot,_G58=high,_G67=strong,_G76=no] 
[_G40=overcast,_G49=hot,_G58=high,_G67=weak,_G76=yes] 
[_G40=rain,_G49=mild,_G58=high,_G67=weak,_G76=yes] 
[_G40=rain,_G49=cool,_G58=normal,_G67=weak,_G76=yes] 
[_G40=rain,_G49=cool,_G58=normal,_G67=strong,_G76=no] 
[_G40=overcast,_G49=cool,_G58=normal,_G67=strong,_G76=yes] 
[_G40=sunny,_G49=mild,_G58=high,_G67=weak,_G76=no] 
[_G40=sunny,_G49=cool,_G58=normal,_G67=weak,_G76=yes] 
[_G40=rain,_G49=mild,_G58=normal,_G67=weak,_G76=yes] 
[_G40=sunny,_G49=mild,_G58=normal,_G67=strong,_G76=yes] 
[_G40=overcast,_G49=mild,_G58=high,_G67=strong,_G76=yes] 
[_G40=overcast,_G49=hot,_G58=normal,_G67=weak,_G76=yes] 
[_G40=rain,_G49=mild,_G58=high,_G67=strong,_G76=no] 

但我有這個結果。爲什麼?你有什麼想法嗎?

回答

4

謂詞可能看起來像:

merge([], [], []). 
    merge([X|Xs], [Y|Ys], [X=Y|Zs]) :- merge(Xs, Ys, Zs). 

你開始與空單的基本情況,並通過兩個列表長度相同的情況下導入。

+0

感謝您的回答,我想這一點。但是有一個問題開始: - 諮詢( 'tennis.pl'), \t \t見( 'tennis.pl'), \t \t重複, \t \t讀(A), \t \t A = ..名單, \t \t(A \ = end_of_file-> \t \t(A \ = END_OF_FILE,構件( '屬性',列表) - > \t \t刪除(列表, '特性',YeniList2);真), \t \t (A \ = end_of_file,member('data',List) - > \t \t刪除(列表, '數據',YeniList);真), \t \t合併(YeniList2,YeniList,提納), \t \t寫(提納),NL;真), \t \t A = END_OF_FILE,! \t \t \t見過。 – jack 2011-05-15 20:34:08

+0

您應該打開另一個問題,並將tennis.pl的內容也納入該問題。 – pad 2011-05-15 22:25:03