Add scoring jokes and algorithm section
This commit is contained in:
28
index.html
28
index.html
@@ -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">
|
||||
|
||||
Reference in New Issue
Block a user