Турнір

Як працюють формули нарахування очок у лізі?

Кожна ліга нараховує очки своїм гравцям за кожен турнір, у якому вони грають, використовуючи систему підрахунку, яку ви обираєте при створенні або редагуванні ліги:

  • Логарифмічна
  • Квадратний корінь
  • Лінійна
  • Фіксована (ви вводите точні очки для кожного місця)
  • Власна (пишете власну формулу)

Змінні власної формули

Власна формула обчислюється один раз для кожного гравця в кінці турніру. Деякі її змінні описують турнір, тому вони мають однакове значення для всіх у ньому, а деякі описують гравця, для якого підраховуються очки. Розуміння цієї різниці — основна навичка при написанні формули.

Про турнір, однакове для всіх гравців:

pкількість гравців
nкількість входів (включаючи реентрі)
bбай-ін
zпризовий фонд
mкількість призових місць
tформат турніру (1 стандартний, 2 спліт, 3 шутаут, 4 містері баунті)

Про гравця, для якого підраховуються очки:

fфінішна позиція
cскільки вони витратили (бай-ін плюс їхні власні ребаї та адон)
kнокаути, які вони зробили
rребаї, які вони взяли
aадони, які вони взяли
xкулі, які вони використали (їхні загальні бай-іни)
wвиграші (сума, яку вони виграли)
dраунди до фіналу в шутауті (1 — фінальний раунд)

Наприклад, ця формула дає кожному гравцю очко за кожного суперника, якого вони пережили, бонус у 2 очки за кожен нокаут і віднімає очко за кожен ребай:

(p - f + 1) + (2 * k) - r

Розширене: написання власної формули

Окрім арифметики, дві конструкції виконують більшість роботи в реальних формулах ліг: умови та таблиці очок. Ви також можете використовувати sqrt, log, log10, exp, pow, round, floor, fix, abs, min і max, а також ^ для степенів.

Умови з ? :

Умова читається як тест ? значення, якщо істина : значення в іншому випадку.

f == 1 ? 50 : 10

Це нараховує 50 очок переможцю та 10 всім іншим. Зверніть увагу на подвійний == для "дорівнює". Ви також маєте <, <=, >, >= і !=, і можете поєднувати тести з and і or:

p >= 20 and f <= 3 ? 10 : 0

Умови можна ланцюжити, що дозволяє клубам писати різні правила для кожної позиції. Кожен : передає управління наступному тесту:

f == 1 ? 30 : f == 2 ? 20 : f == 3 ? 15 : 5

Таблиці очок з [ ... ][f]

Замість ланцюжків умов ви можете перелічити очки по порядку та вибрати відповідне фінішу гравця:

[100, 85, 70][f]

Список читається за позицією: перше місце отримує 100, друге 85, третє 70. Позиції починаються з 1, тому f вирівнюється зі списком без додаткових коригувань.

Завжди захищайте таблицю очок умовою. Якщо гравець фінішує нижче за кінець списку, формула не спрацює, і цей гравець не отримає жодних очок. Список з трьох записів потребує f < 4:

f < 4 ? [100, 85, 70][f] : 0

Використовуйте значення : для встановлення мінімуму для всіх інших, наприклад : 5, щоб дати п'ять очок за участь.

Стежте за дужками

Множення та додавання виконуються перед порівнянням, що непомітно змінює те, що перевіряє формула. Написана без дужок:

30 * k + f < p / 3 + 1 ? 100 : 1

тест стає "чи 30 * k + f менше за p / 3 + 1", а не "чи f у верхній третині". Ліга може пропрацювати цілий сезон за неправильним правилом таким чином. Візьміть умову або весь умовний вираз у дужки:

30 * k + (f < p / 3 + 1 ? 100 : 1)

Формули, які реально використовують клуби

Це реальні шаблони з ліг, які працюють на Blind Valet, спрощені лише там, де список місць клубу був дуже довгим.

Що хотів клубФормула
Очко за участь, більше нічого1
Таблиця лідерів лише з перемогf == 1 ? 1 : 0
Нокаути плюс очко за перемогуk + (f == 1 ? 1 : 0)
Одне очко за кожного переможеного суперника з бонусом за п'єдесталp - f + 1 + (f < 4 ? [4, 2, 1][f] : 0)
Фіксована таблиця, але всі інші все ще отримують очкиf < 10 ? [1500, 1200, 900, 700, 600, 500, 400, 300, 200][f] : 100
Вищі ставки коштують більше, кожен ребай забирає очкиlog(p + 1) / f * 10 + b - c / 4
Очки масштабуються за розміром призового фондуsqrt(p + 1) / f * z / 500
Лише верхня третина отримує очки, масштабовано за розміром поля30 * k + (f < p / 3 + 1 ? sqrt(p / 10) * [120, 90, 70, 60, 50, 45, 40, 30, 25, 20][f] : 1)
Кожне місце як відсоток від бази, що зростає з полемf == 1 ? round(600 + p * 10) : f == 2 ? round((600 + p * 10) * 0.82) : round((600 + p * 10) * 0.74)

Приклад зі ставками показує, чому дві групи важливі. Він використовує b і c, які виглядають схоже, але знаходяться на протилежних сторонах: додавання b підвищує кожен результат у турнірі з вищим бай-іном, оскільки бай-ін належить турніру, тоді як віднімання c забирає частку того, що кожен гравець індивідуально витратив. Гравець, який взяв два ребаї, фінішує з меншою кількістю очок, ніж гравець, який зайняв те саме місце з однією кулею.

Перевірка вашої формули

Налаштування ліги показують попередній перегляд очок для кожної фінішної позиції, коли ви друкуєте, щоб ви могли побачити форму виплати перед збереженням. Якщо попередній перегляд порожній, формула ще не є валідною: перевірте відсутню дужку або таблицю очок, за межі якої може вийти низький фініш.