Add scoring jokes and algorithm section
This commit is contained in:
28
index.html
28
index.html
@@ -162,6 +162,34 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="c bili-note">Если заметите результаты раньше — срочно создайте баг-репорт, мы откатим.</div>
|
<div class="c bili-note">Если заметите результаты раньше — срочно создайте баг-репорт, мы откатим.</div>
|
||||||
</section>
|
</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>
|
</main>
|
||||||
|
|
||||||
<footer class="footer">
|
<footer class="footer">
|
||||||
|
|||||||
19
style.css
19
style.css
@@ -292,6 +292,25 @@ main {
|
|||||||
font-size: 14px;
|
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 {
|
.footer {
|
||||||
padding: 24px 16px;
|
padding: 24px 16px;
|
||||||
background: #0f2d69;
|
background: #0f2d69;
|
||||||
|
|||||||
Reference in New Issue
Block a user