0

我正在尝试获取某个玩家获得的相等分数的计数。例如,如果我有 score(p1, 1), score(p2, 1), score(p3, 2),我想用 result(1,2) 和 result 获得一个新的谓词occurrences(Score, Count) (2,1),因为两次得1分,而只得一次得2分。

我尝试使用以下程序计算出现次数:

getScore(S) :- 分数(P,S)。

出现次数(S,L):- L = #count{Sc:得分(P,Sc)},getScore(S)。

但是,得到的值是不正确的:occurrences(1,2),occurrences(2,2)。如上所述,分数 2 应该只有一个计数。

4

1 回答 1

1

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

occurences(S, L) :- L = #count{P : score(P, S)}, score(_, S).
于 2018-12-22T13:36:51.053 回答