2011-12-18 14 views
2

私は事実のデータベースを通って各事実の数値を合計してリストに保存するルールを作成しようとしています。具体的には、これは質問です。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つのステーションの中間に位置し、それらをリストに入れる。

+0

コードを読みやすいように再フォーマットしました。これは実際に法的なPrologではない場合は私の謝罪、私は比例フォントでコードを読んで立つことができないと私はまた、コードスニペットの水平スクロールバーを嫌う。そう。コードの書式を変更している間に、私は中間付近の ';'がセミコロンかカンマかを知っていましたか? – sarnold

答えて

1

まあ、正直なところあなたの質問5の答えにはリファクタリングが必要です。 linksからquestionsまで約theと同じsubjectをお伝えします。

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

+0

ありがとう、私は今それらを見て! :) – daydream

関連する問題