このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1276873238/629
#  問題 
#  長針と短針の間の角度がX度のとき、可能性のある時刻をすべて挙げよ。 
# 
# 

'長針と短針の間の角度がX度のとき、可能性のある時刻をすべて挙げよ'(_X度,_時,_分,_秒) :-
        between(0,11,N),
        可能性のある時刻(N,_X度,_可能性のある時刻),
        '時・分・秒に分解'(_可能性のある時刻,_時,_分,_秒).

可能性のある時刻(N,_X度,_角度差までの接近時刻) :-
        角度差までの接近時刻(N,_X度,_角度差までの接近時刻).
可能性のある時刻(N,_X度,_角度差までの接近時刻) :-
        長針が短針を追い越し角度差を付ける時刻(N,_X度,_角度差をつける時刻).

角度差までの接近時刻(N,_X度,_角度差までの接近時刻) :-
        _X度 < (30 * N),
        _追い付き時間 is _X度 / 330 + N,
        _角度差までの接近時刻 is N + _追い付き時間.

長針が短針を追い越し角度差を付ける時刻(N,_X度,_角度差をつける時刻) :-
        _追い付き時間 is (30 * N + _X度) / 330,
        _追い付き時間 < 1.0,
        _角度差をつける時刻 is N + _追い付き時間.

'時・分・秒に分解'(_時刻_時,_時,_分,_秒) :-
        _時 is truncate(_時刻_時) // 3600,
        _余り秒 is truncate(_時刻_時) mod 3600,
        _分 is _余り秒 // 60,
        _秒 is _余り秒 mod 60.