/dev/arena/grouping/plan

Посчитать раскладку групп для заданного числа игроков. Ничего не меняет.

Адрес метода

/dev/arena/grouping/plan

Требует сессию пользователя

Только не-прод или админ

Весь раздел /dev/arena доступен, если сервер не продовый либо у игрока стоит флаг админа.

Параметры

Параметр Обязательный Тип Описание
count ДА int сколько игроков раскладываем
size ДА int размер группы; 0 — лига без ограничения

Результат

{
    "response": {
        "success": 1,
        "count": 1001, "size": 100,
        "groups": 11,
        "histogram": { "91": 11 },
        "total": 1001,
        "first": 91, "last": 91
    }
}

Что важно знать

Метод ничего не пишет — ни групп, ни игроков не создаёт и не двигает. Только считает.

Зачем существует. Правило ТЗ задано двумя примерами — 1001 и 1000001 игрок. Таких популяций на стенде нет и не будет, а правило проверять надо именно на них: ошибка в арифметике проявилась бы только на проде. Единственный способ — считать раскладку отдельно от данных.

Правило: групп ровно ceil(count / size), дальше count делится между ними максимально ровно. Не «по size, а остаток в хвост»: при 1001 игроке наивное деление даёт десять групп по 100 и одну с ОДНИМ человеком, которому не с кем воевать.

Недобор уходит в хвост: первые группы крупнее, последние мельче — ТЗ говорит «размазываем между остальными (последними по хронологии)». Поля first и last для этого и отданы.

size = 0 означает лигу без ограничения — одна группа на всех. Так устроены низшая лига и Алмаз.