2
我有一個數據庫看起來像;SWI-Prolog列表和遞歸
airport(ist, 90).
airport(saw, 45).
airport(esb, 60).
airport(adb, 60).
airport(erz, 30).
airport(ayt, 90).
airport(mlx, 30).
airport(tzx, 30).
airplane(f1, ist, [esb,tzx,saw]).
airplane(f2, ist, [mlx,esb,erz,esb]).
airplane(f3, ist, [esb,ist,esb,ist]).
airplane(f4, saw, [ayt,saw,ayt,saw]).
airplane(f5, erz, [esb,erz,esb]).
airplane(f6, mlx, [ist,esb,tzx,saw]).
,我有一個名爲「測試」謂詞需要兩個列表作爲參數。所以,如果你寫測試([ist],X)。你應該得到X = [esb,mlx]。我寫了這段代碼。
testing([],[]).
testing([D|D1],[L|L1]) :-
airport(D,_),
airplane(_,D,[L|_]),
testing(D1,L1).
這工作,輸出是:
[8] 60 ?- listConnections([ist],X).
X = [esb] ;
X = [mlx] ;
X = [esb].
但是,這不是我想要的。所以第一個問題是我需要一個單行答案,如X = [esb,mlx]。第二個問題是不應該在列表中重複元素。我希望我的問題清楚。任何幫助將不勝感激。
感謝莫格,它的工作! (: – bleda 2012-04-23 15:53:04