我在序言以下代碼:從事實中獲取最大值?
designer(name("Ivan", "Ivanov"), "Bulgarian", 12, 11).
designer(name("John", "Turturro"), "Italian", 2, 9).
designer(name("John", "McLane"), "American", 32, 26).
designer(name("Roberto", "Turturro"), "Italian", 32, 8).
designer(name("Petar", "Petrov"), "Bulgarian", 32, 23).
designer_max_points(FirstName, LastName, Points) :-
designer(name(FirstName, LastName), _, _, Points),
not(designer(name(_,_), _,_, Points1), Points1 > Points).
我的目標是讓每個設計師其實最大點值(最終值)。
上述解決方案的工作,但我不知道爲什麼。我已經研究了而不是謂詞,並且顯然它的參數在失敗時成功(例如?-not(2 = 3),將返回true)。
但是,如果是這樣的話:
designer_max_points(FirstName, LastName, Points) :-
designer(name(FirstName, LastName), _, _, Points),
designer(name(_, _), _,_, Points1),
Points > Points1.
...爲什麼不此代碼的工作?
謝謝,這是有道理的。你能解釋一下在謂詞中究竟發生了什麼嗎? – HornedDemoN
mmh ... *精確*是一個很大的詞......查看維基百科關於[Negation as failure]的文章(https://en.wikipedia.org/wiki/Negation_as_failure) – CapelliC