• ベストアンサー

plorogプログラミング

たとえば /*ミラノ:ロンドン*/ timetable(mil,lon,[0735,0845,az226,[sun,mon,tue,wed,thu,fri,sat]]). timetable(mil,lon,[0755,0900,ba571,[sun,mon,tue,wed,thu,fri,sat]]). timetable(mil,lon,[0815,0925,ba561,[sun,mon,tue,wed,thu,fri,sat]]). timetable(mil,lon,[1020,1125,az228,[sun,mon,tue,wed,thu,fri,sat]]). timetable(mil,lon,[1130,1230,ba565,[sun,mon,tue,wed,thu,fri,sat]]). というフライトデータがあるとして、ここからフライト時間を割り出すにはどうしたらいいんでしょうか? 述語が分かる方お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • rabbit_cat
  • ベストアンサー率40% (829/2062)
回答No.2

時間差の計算が面倒ですね. timespan(A,D,T) :- A<60, D<60, T is D-A. timespan(A,D,T) :- A>=100, D>=100, A0 is A-100, D0 is D-100, timespan(A0,D0,T). timespan(A,D,T) :- A<60, D>=100, D0 is D-100, timespan(A,D0,T0), T0>=0, T is T0+100. timespan(A,D,T) :- A<60, D>=100, D0 is D-100, timespan(A,D0,T0), T0<0, T is T0+60. flighttime(T) :- timetable(mil,lon,[D,A|_]), timespan(D,A,T). とかでどうでしょう. ?- flighttime(T). でフライト時間の一覧が得られます.

その他の回答 (2)

  • rabbit_cat
  • ベストアンサー率40% (829/2062)
回答No.3

Dはdepature time Aはarrival time のつもりでしたが,#2のtimespanで,AとDが逆になってました. プログラムの機能は問題ないのですが,一応,訂正.

  • chirubou
  • ベストアンサー率37% (189/502)
回答No.1

回答がないようなので。 この timetable() というのは、出発地、到着地、出発時刻、到着時刻、便名、運行曜日のリスト、という並びのようですね。で、質問です。「フライト時間の定義はなんでしょう?timtableから必要な情報を(パターンマッチで)取り出して、フライト時間を計算すればいいのではないでしょうか。

関連するQ&A

専門家に質問してみよう