2016-04-30 8 views
0

私はSWI Prologに取り組んでいます。私は自分のデータベースにいくつかの事実を持っています。私は、新しいルールを構築するときに、より大きい演算子(>)を使用する方法を理解することができません。プロローグ内の演算子よりも大きい

私はジョンが、学生で3.2 CGPAを持ち、同様にマイクのために、CS部門に属していることを示す形

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

のいくつかの事実を持っています。

今、私は私のデータベースにXのCGPAが

を次のように私の知識によると、私はこのルールを追加することができます3.8

より大きい場合はtrueを返します

deanlist(X)のルールを追加したいです

deanlist(X):- 
    X's cgpa is greater than 3.8 

私がブルートフォースのアプローチをとっているなら、私は3.8より大きいcgpaのすべての可能性をOR演算子で入力できます。私は

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

を模索している。しかし、私は私の場合はオペレータより大きいを使用する方法を見つけ出すことができませんでした。

この場合、より大きい演算子を使用する方法を教えてください。あなたは新しい変数に一致した後、GPAの比較のために別のステートメントを使用する必要があります おかげ

答えて

1

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

その後、deanlist(X).が返されます:

X = mike 
+0

感謝を。それは本当に私を助けました。 – Awais

関連する問題