Track and assist your riichi games

Mahjong Pantheon can help with games and tournaments

Как работают рассадки

Pantheon предоставляет несколько вариантов рассадок для турниров:

  • Случайная рассадка
  • Швейцарская рассадка
  • Интервальная рассадка
  • Предопределенная рассадка

Рассмотрим подробнее каждую.

Случайная рассадка

  • Эта рассадка может быть использована в любой момент турнира, поскольку она не опирается ни на какие предыдущие данные.
  • При использовании рассадки игроки перемешиваются случайным образом.
  • Могут возникнуть (и с большой вероятностью возникнут) пересечения, если рассадка используется на поздних этапах турнира.
  • Это единственная рассадка, которую можно использовать в самом начале турнира.

Швейцарская рассадка

  • Эта рассадка учитывает текущее расположение игроков в рейтинге и предыдущую историю игр с целью минимизации пересечений.
  • Швейцарскую рассадку нельзя использовать, если ни одной игры еще не сыграно.
  • Рассадка преследует две цели:
    • Уменьшение числа пересечений (по возможности)
    • Игроки должны играть с примерно равными по текущему рейтингу (также по возможности)
  • Упрощенный алгоритм рассадки:
    • Берем текущую рейтинговую таблицу и выбираем первого игрока в ней (с наибольшим количеством очков).
    • Пробегаем по таблице вниз и ищем первого с наибольшим числом очков игрока, с которым выбранный игрок еще не играл, выбираем его.
    • Пробегаем дальше и ищем первого с наибольшим числом очков игрока, с которым еще не играли выбранные двое, выбираем его.
    • Таким же образом находим последнего игрока. Так формируется первый стол. Выбранные игроки исключаются из таблицы.
    • Шаги повторяются до тех пор, пока не соберутся все столы.
    • На поздних этапах турнира может не получиться найти подходящее сочетание игроков, в этом случае условие "с которым выбранные игроки еще не играли" заменяется на условие "с которым выбранные игроки имеют наименьшее суммарное количество пересечений".
    • Рассадка может перебрать несколько вариантов, суммируя общее количество пересечений по варианту. В качестве рабочего выбирается вариант с наименьшим общим количеством пересечений.
    • Существует также ограничение алгоритма из-за его алгоритмической сложности (в общем случае задача решается за неполиномиальное время). В случае превышения времени генерации, выбирается наилучший вариант из уже сгенерированных.
    • В случае, если количество столов не кратно степени двойки, последние столы добиваются по остаточному принципу. Это означает, что за последними столами вероятность пересечения игроков становится кратно выше.

Интервальная рассадка

  • Эта рассадка учитывает только текущее расположение игроков в рейтинге.
  • Интервальную рассадку нельзя использовать, если ни одной игры еще не сыграно.
  • На входе алгоритма - целочисленный интервал.
    • Если интервал равен 1, столы будут играть в соответствии с текущими местами: 1-2-3-4, 5-6-7-8, и так далее.
    • Если интервал равен 2, столы будут играть по схеме 1-3-5-7, 2-4-6-8, и так далее.
    • И так далее.
  • Обратите внимание, что столы выбираются последовательно, т.е. сначала из таблицы выбирается первый стол, далее второй, далее третий. В случае некратного интервала (например, 3), за первыми тремя столами будут играть первые 12 игроков, за вторыми тремя - вторые 12, и так далее.
  • В случае, если количество столов не кратно выбранному интервалу, последние столы добиваются по остаточному принципу. Это означает, что за последними столами вероятность пересечения игроков становится кратно выше.

Предопределенная рассадка

  • Этот тип рассадки плохо сочетается с предыдущими тремя, поскольку требует задания скрипта рассадки заранее.
  • Администратор турнира задает скрипт рассадки в настройках турнира, используя условные идентификаторы игроков (от 1 до N).
  • Далее необходимо на странице управления игроками сопоставить каждому игроку его условный идентификатор.
  • После этого можно начинать турнир.
  • На странице задания скрипта рассадки есть также поле "Текущая игра", в которой задается номер игры. Номер обновляется автоматически при подтверждении результатов игр.
  • Технически, есть возможность поменять типа турнира в настройках на использование встроенных рассадок. Встроенные рассадки будут использовать турнирную таблицу и предыдущие результаты игр. Однако, не рекомендуется менять тип турнира с автоматического на предопределенный если игры уже сыграны по автоматическим рассадкам - это потребует введения соответствующего количества фейковых игр в скрипт и задания нужной реальной игры в поле "Текущая игра".