- ベストアンサー
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]]). というフライトデータがあるとして、ここからフライト時間を割り出すにはどうしたらいいんでしょうか? 述語が分かる方お願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
時間差の計算が面倒ですね. 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)
Dはdepature time Aはarrival time のつもりでしたが,#2のtimespanで,AとDが逆になってました. プログラムの機能は問題ないのですが,一応,訂正.
- chirubou
- ベストアンサー率37% (189/502)
回答がないようなので。 この timetable() というのは、出発地、到着地、出発時刻、到着時刻、便名、運行曜日のリスト、という並びのようですね。で、質問です。「フライト時間の定義はなんでしょう?timtableから必要な情報を(パターンマッチで)取り出して、フライト時間を計算すればいいのではないでしょうか。