事実のデータベースを通過し、各事実の数値を合計してリストに保存するルールを作成しようとしています:具体的には、これが質問です:
Q5 の回答に基づいて、2 つの駅間の所要時間を返す/表示するルールを作成します。
質問 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).
リストを追加して「時間」を追加しようとしましたが、うまくいきません。
*はい、セミコロンです。
それに付随する別のファイルがあり、地上のすべての駅と時刻が「地上 (X,Y,Z)」の形式で含まれています。すなわち overground(kenton,southkenton,2) です。これは、ステーション 1、ステーション 2、およびステーション 1 から 2 に移動するのにかかる時間を示しています。
データベース全体を調べて、X と Y (質問 5 で確認) を見つけてから、2 つのステーションの間にあるすべての Z を合計してリストに入れようとしています。