2013-11-03 122 views
-1

我有事實:Prolog的事實和查詢

studies(it, da).  // IT branch studies the module DA 
studies(it, pm). 
studies(ie, pm). 
studies(it, plc). 
studies(it, se). 
studies(cs, plc). 
studies(cs, da). 
studies(cs, se). 

我需要編寫查詢:

  1. 多少科目做CS的學生學習?

  2. 哪個分支研究科目pm和plc?

+0

No..these是事實.. – Hacker688

回答

1
  1. aggregate_all(count, studies(cs, X), Count).(見Prolog count the number of times a predicate is true

  2. studies(X, pm), studies(X, plc).

+0

你能PLZ告訴是什麼規則和查詢之間的區別。其實我是序言的新手。 – Hacker688

+0

@ Hacker688一個規則的形式爲': - ',其中'Head'命名一個謂詞,該謂詞從0-n個變量中獲取,這些變量或變量都可以是變量或基礎條件,而'Body'列出了必須滿足的一組條件如果「頭」是真的。我們可以這樣讀規則:「如果身體的每一個陳述都是真的,那麼頭是真的」。一個事實本質上是一個形式爲': - 真'的規則。在提示'?-'並詢問某個陳述是否爲真之後,在頂層輸入查詢。 Prolog試圖通過測試它是否遵循現有的事實和規則來證明被查詢的陳述是真實的。 –