如何获得谓词中重复值的计数?

时间:2018-12-21 14:42:25

标签: answer-set-programming clingo

我正在尝试获得某位玩家获得的均分计数。 例如,如果我有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应该只有一个计数。

1 个答案:

答案 0 :(得分:1)

您可以这样思考您的问题:有多少球员获得了该分数?然后计算那些玩家#count{Player : score(Player, S)}

occurences(S, L) :- L = #count{P : score(P, S)}, score(_, S).