2011-09-24 111 views
2

假設我有一個結構comparetime(小時,分鐘), 當用戶按鍵示例comparetime(10,40), 結構將使指定上的時間範圍比較例 定時從10進入
1): 00至12:00將打印一條消息,並且 2)從18:00至20:00將打印一條消息。 如果鍵控的時間不在範圍內,它也會打印一條消息。如何將時間與Prolog中指定的時間範圍進行比較?

我該怎麼做?

這很容易比較單詞,但我真的很難與比較時間。

回答

1

這很容易比較文字? 當涉及到國際化時,您應該嘗試一下,以體會到有多難! 更容易比較對整數,從你的問題(如果我理解的問題)。

message_on_range(1, 10:00, 12:00, 'it\'s morning!'). 
message_on_range(2, 18:00, 20:00, 'it\'s evening!'). 

comparetime(Hours, Mins) :- 
    message_on_range(_, Start, Stop, Message), 
    less_equal_time(Start, Hours:Mins), 
    less_equal_time(Hours:Mins, Stop), 
    write(Message), nl. 
comparetime(_Hours, _Mins) :- 
    write('please check your clock!'), nl. 

less_equal_time(H1:S1, H2:S2) :- 
    H1 == H2 -> S1 =< S2 ; H1 < H2. 

你應該知道Prolog的特點:你的問題可能需要在消息打印後進行剪切!即

... 
     less_equal_time(Hours:Mins, Stop), 
     write(Message), nl, !. 
+0

非常感謝。真的很感激它:) –

相關問題