我正在尝试获得某位玩家获得的均分计数。 例如,如果我有score(p1、1),score(p2、1),score(p3、2),则我想获得一个具有result(1,2)和result的新谓词出现(Score,Count) (2,1),因为两次获得1分,而一次仅获得2分。
我尝试使用以下程序来计算发生次数:
getScore(S):-得分(P,S)。
occurrences(S,L):-L = #count {Sc:score(P,Sc)},getScore(S)
但是,获得的值不正确:encesences(1,2),enceences(2,2)。 如上所述,分数2应该只有一个计数。
答案 0 :(得分:1)
您可以这样思考您的问题:有多少球员获得了该分数?然后计算那些玩家#count{Player : score(Player, S)}
:
occurences(S, L) :- L = #count{P : score(P, S)}, score(_, S).