0
所以我的辦法解決這個問題是合乎邏輯的。一切都按預期工作。我的代碼如下:
employees(billSmith).
employees(bobJones).
employees(lindaHiggs).
married(billSmith,karenSmith).
parent(billSmith,tonySmith).
parent(billSmith,lauraSmith).
ensured(X) :-
employees(X),
( parent(X,_)
; married(X,_)
).
樣品查詢:
?- ensured(X).
X = billSmith ;
X = billSmith ;
X = billSmith ;
false.
我的問題:我得到正確的輸出,但爲什麼我的輸出多餘的?我如何轉換我的實現以獲得單個非重複答案?
非常感謝幫助。謝謝!
你可以添加割傷保證/ 1提交做過的選擇,但您的規則似乎是錯誤的 - 沒有地址家屬 – CapelliC
你肯定**不**得到正確的輸出。您的問題陳述中提及的除勞拉史密斯以外的每個姓名都有保險(她不是未成年人)。你也拼寫「被保險人」。 (順便說一句,這是一種非常奇怪的書寫方式,但我想你沒有提出問題陳述)。 – 2015-10-20 07:14:07
如果您實際上將所有信息以事實的形式放入數據庫中,您會發現制定查詢會更容易一些。目前,你錯過了一些。 – 2015-10-20 07:26:13