Как получить количество повторных значений в предикате? - PullRequest
0 голосов
/ 21 декабря 2018

Я пытаюсь получить количество равных очков, полученных некоторым игроком.Например, если у меня есть оценка (p1, 1), оценка (p2, 1), оценка (p3, 2), я хотел бы получить новый предикат вхождения (Score, Count) с результатом (1,2) и результатом(2,1), так как оценка 1 была получена два раза, а оценка 2 - только один раз.

Я попытался подсчитать количество случаев с помощью следующей программы:

getScore (S): - оценка (P, S).

вхождения (S, L): - L = #count {Sc: оценка (P, Sc)}, getScore (S).

Однако полученные значения не верны: случаи (1,2), случаи (2,2).Счет 2 должен иметь только один счет, как упомянуто выше.

1 Ответ

0 голосов
/ 22 декабря 2018

Вы могли бы подумать о своем вопросе так: сколько игроков получили этот счет?Затем посчитайте этих игроков #count{Player : score(Player, S)}:

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