2016-04-30 111 views
0

我正在研究SWI Prolog。我的數據庫中有一些事實。構建新規則時,我無法弄清楚如何使用'大於'運算符(>)。大於prolog中的運算符

我有形式

student(john,3.2,cs). 
student(mike,3.9,cs). 

顯示,約翰是一名學生,有一個3.2 CGPA,屬於CS部門,同樣,對於邁克的一些事實。

現在我想將規則添加到我的數據庫

deanlist(X)將返回true,如果X的CGPA大於3.8

據我瞭解,我可以按如下

添加此規則
deanlist(X):- 
    X's cgpa is greater than 3.8 

如果我採用蠻力方法,我可以使用OR運算符來徵集cgpa大於3.8的所有可能性。就像我可以添加規則像

deanlist(X):- 
    student(X,3.81,cs) 
; student(X,3.82,cs) 
; student(X,3.82,cs) 
.......so on to 
    student(X,4.0,cs). 

但因爲它變成硬編碼的,應當避免,我不希望走那條路。

我探討以下鏈接

http://boklm.eu/prolog/page_10.html#101

http://www.swi-prolog.org/pldoc/man?section=operators

,但我無法弄清楚如何在我的情況下,使用比運營商更大。

請告訴我如何在這種情況下使用大於運算符。 感謝

回答

1

你會需要它匹配的新變量之後使用其他語句的GPA比較:

deanlist(X) :- student(X, Y, cs), Y > 3.8. 

然後,deanlist(X).將返回:

X = mike 
+0

感謝。它真的幫助了我。 – Awais