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]).
と "testing"という述語は、パラメータとして2つのリストをとります。だから、あなたがテスト([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]のように1行の答えが必要なことです。第2の問題は、リスト内の要素を複製すべきでないということです。私は私の問題がはっきりしていることを願うどんな助けでも大歓迎です。
ありがとうございました。 (: – bleda