From 81653b058a53eb5c198c7a94e28194b3133a9bb8 Mon Sep 17 00:00:00 2001 From: Dan Date: Thu, 11 Dec 2025 13:20:01 +0300 Subject: [PATCH] Add scoring jokes and algorithm section --- index.html | 28 ++++++++++++++++++++++++++++ style.css | 19 +++++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/index.html b/index.html index 588f615..2417af2 100644 --- a/index.html +++ b/index.html @@ -162,6 +162,34 @@
Если заметите результаты раньше — срочно создайте баг-репорт, мы откатим.
+ +
+
Как ставят баллы за командный этап
+

+ Сообщение участника чата: «Вообще баллы за командный этап ставят по след принципу: + 1) все, что комиссия понаписала в бумажках, увозят на мусоросжигательный завод; + 2) согласно принципам геометрического распределения расставляют баллы и умножают на 3.14». + Дополнили до честного алгоритма: +

+
+
def assign_team_scores(teams, seed=None):
+    # шаг 0: игнорируем бумажки, отправляем в мусоросжигательный завод
+    # шаг 1: геометрическое распределение задаёт редкость хороших баллов
+    rng = random.Random(seed)
+    scores = {}
+    for team in teams:
+        geom = rng.geometric(p=0.42) if hasattr(rng, "geometric") else 1 + int(rng.random() ** -1.3) % 8
+        raw = geom * 3.14  # шаг 2: умножаем на 3.14, чтобы придать научный вид
+        chaos = rng.uniform(-2, 2)  # шаг 3: добавляем шум совещаний
+        scores[team] = max(0, round(raw + chaos, 2))
+    # шаг 4: нормируем так, чтобы никто не понял как
+    k = max(scores.values()) or 1
+    return {t: round(v / k * 100, 2) for t, v in scores.items()}
+
+

+ Итог: распределение честное, воспроизводимость гарантирована любым сидом, кроме реального. +

+