2015-11-07 58 views
0

我試圖比較兩次以查看哪個時間少於另一個時間。一個示例實現將是ArrivalTime < DepartureTime2,其中ArrivalTime和DepartureTime2可以採用格式(XX:XX)的值,例如12:00或15:50。我正在考慮將XX:XX格式轉換爲常規XXXX格式,但我不知道如何操作。有沒有其他方法可以解決這個問題?在Prolog中比較兩次格式爲(XX:XX)的子規則

+0

歡迎來到堆棧溢出。通常希望你至少表現出一些努力:你嘗試過的代碼,以及它沒有起作用。例如,你是否試圖寫'? - 12:00 <15:00。',當你做了什麼? – 2015-11-07 08:47:27

回答

2

沒有必要。編寫爲12:0015:50的時間是一個有效的Prolog術語。您可以使用短期比較(而不是算術比較)對它們進行比較:

?- 12:00 @< 15:50. 
true. 

?- 12:00 @< 5:50. 
false. 

你應該閱讀你所使用的序言中的文檔。例如,在SWI-Prolog中,相關部分是"Standard order of terms"

順便說一句,如果你想知道如何Prolog的看到一個任期15:50

?- write_canonical(15:50). 
:(15,50) 
true. 

這就告訴你,15:50被解釋爲仿:/2的術語,用時間作爲第一個參數和第二個分鐘。這工作,因爲:被聲明爲運營商:

?- current_op(Precedence, Type, :). 
Precedence = 600, 
Type = xfy. 

你可能只是以及使用的表示爲h_m(15, 50)。這樣的術語將排序相同:

?- h_m(12, 00) @< h_m(15, 50). 
true.