Prolog - 再帰的にリストに追加する

私は、事実のデータベースを通って各事実の数字を合計してリストに保存するルールを作成しようとしています。具体的には、これは質問です。

2つのステーション間を移動する時間を返す/表示するQ5の回答に基づいてルールを作成します。

質問5に答える:

time(Station1,Station2) :- overground(Station1,Station2,Time),
    overground(Station1,_,Time),
    overground(_,Station1,Time).
time(Station2,Station1) :- overground(Station2,Station1,Time),
    overground(Station2,_,Time),
    overground(_,Station2,Time).
time(Station1,Station2) :- overground(Station1,Station3,Time),
    time(Station3,Station2);
    overground(Station1,Station3,Time),
    time(Station2,Station3).
time(Station1,Station2) :- overground(Station1,_,Time),
    overground(_,Station2,Time).
time(Station1,Station2) :- overground(Station2,_,Time),
    overground(_,Station1,Time).

私はリストを追加しようとし、 '時間'を追加してみましたが、運はありません。

*はいそれはセミコロンです。

地下鉄の駅と時間のすべてが "overground(X、Y、Z)"の形式である別のファイルがあります。すなわち、オーバーグラウンド(ケントン、サウスケントン、2)。ステーション1、ステーション2、および1から2になるのにかかる時間を示す。

私はデータベース全体を調べ、XとY(質問5はどちらかというと)を見つけて、2つのステーションの間にあるすべてのZを合計してリストに入れようとしています。

2
コードを読みやすくするためにコードを再フォーマットしました。これは実際に法的なPrologではない場合は私の謝罪、私は比例フォントでコードを読んで立つことができないと私はまた、コードスニペットの水平スクロールバーを嫌う。そう。コードを再フォーマットしているときに、私は; が中間付近にあることに気付きました。セミコロンまたはコンマであるはずです。
追加された 著者 sarnold,

1 答え

正直、あなたの質問に答えるには、リファクタリングが必要です。まず、リンクから苦情について 同じ件名

このような再帰を処理する方法を理解したら、現在の質問に対する答えは簡単になります。

1
追加された
ありがとう、私は今それらを見てみましょう! :)
追加された 著者 daydream,