假設我有一個英雄和幾個怪物的遊戲。如果你擊敗了他們,每個怪物都會給予一定數量的分數。如何對不同事實中的數字求和?
total_score(Hero, Score):-
defeated(Hero, Monster),
score(Monster, Points),
Score is Points.
monster(bat).
monster(skeleton).
monster(boss).
score(bat, 100).
score(skeleton, 100).
score(boss, 1000).
defeated(bob, bat).
defeated(bob, skeleton).
defeated(bob, boss).
如果我將來的請求:
?- total_score(bob, Y).
我想答案是:
Y : 1200.
,但我得到相反:
Y : 100,
Y : 100,
Y : 1000.
什麼變化我應該用total_score來製作它工作?我明白爲什麼我會得到這個結果,但我真的不知道該如何做一個事實總結。
的可能的複製[如何總結從多個結果謂詞在序言?](http://stackoverflow.com/questions/35867950/how-to-sum-multiple-results-from-a-predicate-in-prolog) – lurker
@lurker它的確是這是一個近乎重複,但這個問題質量更好,答案也非常模糊(基本上只是指向文檔),所以我認爲已經成熟了一個適當的答覆:) –