我是新來的Prolog,並試圖做一個程序來檢查一些值是否可以作爲日期,但我不知道我能用這種語言做什麼。我不知道命令。我在哪裏可以找到Prolog命令列表?
舉例來說,我想獲得一個字符串的長度,但我不知道這是否可能。
有人可以給我看Prolog命令列表嗎?我正在使用tuProlog for Java。
順便說一句,我想要做的程序是這樣的:接收兩個或三個參數,並檢查是否是某種類型的日期(例如:10/2000,2011/09,11/03/1191等。 )。
我是新來的Prolog,並試圖做一個程序來檢查一些值是否可以作爲日期,但我不知道我能用這種語言做什麼。我不知道命令。我在哪裏可以找到Prolog命令列表?
舉例來說,我想獲得一個字符串的長度,但我不知道這是否可能。
有人可以給我看Prolog命令列表嗎?我正在使用tuProlog for Java。
順便說一句,我想要做的程序是這樣的:接收兩個或三個參數,並檢查是否是某種類型的日期(例如:10/2000,2011/09,11/03/1191等。 )。
documentation對於SICStus Prolog描述了它的標準庫。我不完全確定它的哪些部分是或者不是Prolog實現的標準,但它可能會對您有所幫助。
tuProlog的用戶指南很容易找到:Documentation。第5章包含您可以使用的Prolog命令。
從你的問題,我推斷你收到日期作爲一個字符串,你不知道日期字符串到達的格式。
我會看看text_term/2
將字符串轉換爲術語(我不是100%確定的,我使用的Prolog系統具有不同的命名謂詞)。然後,你可以檢驗它是否包含一個或兩個斜槓(或爲另一種格式或不是日期的話),由統一的期限與所需的結構的期限:
Term = D/M/Y
和測試,如果這是一個有效日期:
text_term(Text,Term),
(Term = D/M/Y, valid_date(D,M,Y) ->
true
; Term = M/D/Y, valid_date(D,M,Y) ->
true
; ...
的->
是 「如果 - 那麼」 中,;
是 「其他」。 您需要編寫一個測試有效日期的謂詞,我稱之爲valid_date/3
。
您可以查看tuProlog的用戶指南at this location 第4.4節討論內建的謂詞。
此鏈接可能也有幫助。 Working with strings in Prolog
而對於解析,因爲在tuProlog庫之一是DCG中: Prolog DCG presentation
您也可以搜索爲#1序言和DCG看到別人的問題和答案。