Add scoring jokes and algorithm section

This commit is contained in:
Dan
2025-12-11 13:20:01 +03:00
parent ceb2fb079f
commit 81653b058a
2 changed files with 47 additions and 0 deletions

View File

@@ -162,6 +162,34 @@
</div>
<div class="c bili-note">Если заметите результаты раньше — срочно создайте баг-репорт, мы откатим.</div>
</section>
<section class="builder-section scoring">
<div class="builder-section__title h1 c">Как ставят баллы за командный этап</div>
<p class="builder-section__description c">
Сообщение участника чата: «Вообще баллы за командный этап ставят по след принципу:
1) все, что комиссия понаписала в бумажках, увозят на мусоросжигательный завод;
2) согласно принципам геометрического распределения расставляют баллы и умножают на 3.14».
Дополнили до честного алгоритма:
</p>
<div class="code-card">
<pre><code class="code">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()}</code></pre>
</div>
<p class="builder-section__description c">
Итог: распределение честное, воспроизводимость гарантирована любым сидом, кроме реального.
</p>
</section>
</main>
<footer class="footer">

View File

@@ -292,6 +292,25 @@ main {
font-size: 14px;
}
.scoring .code-card {
background: #0b0b0f;
color: #f4f7ff;
border: 1px solid #ffc107;
border-radius: 14px;
box-shadow: 12px 12px 0 #ffc107;
padding: 16px;
overflow: auto;
}
.code {
display: block;
font-family: "Courier New", monospace;
font-size: 14px;
line-height: 1.5;
white-space: pre;
color: #f8f8f8;
}
.footer {
padding: 24px 16px;
background: #0f2d69;