電子書籍の厳選無料作品が豊富!

prologの計算で困っています。
2つの時間を定義してその2つを足した計算を行いたいのですが上手くいきません。
例えば
0150と1750を定義したとします。(0150は1時間50分、1750は17時間50分ということです。)
この2つを足した時間、つまり1940(19時間40分)という回答を得るような述語を作成したいのです。
よろしくお願いします。

A 回答 (2件)

課題のようなので簡単に。



まず、せっかくprolog なんですから、1時間50分を0150と表記するのはどうかと思います。例えば、

time(1,50).

とか定義すべきでしょう。とすると、時間を足すという述語は、

add_time(time(H0,M0),time(H1,M1),time(H,M)) :-
.....

とかいう述語になるかと思います。後は簡単ですよね?
    • good
    • 0

Prolog は使ったことがないので知りませんが,


0150 や 1750 など hhmm 形式の時刻を分に変換する述語
(0150 → 110分,1750 → 1070分) と,
その逆変換を行う述語を作ればいいのでは?
(Prolog はユニフィケーションがあるのでこれらの述語は
1つにまとめられるのかもしれませんが.)

(1) 変換 (hhmm → 分)
(2) 分同士を単純に加算
(3) 逆変換 (分 → hhmm)

そうすれば加算以外の時間計算も簡単にできるようになります.
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!