Files
dano-clone/index.html

207 lines
13 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html>
<html lang="ru">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>DANO — результатов нет с 1984 • danosito</title>
<meta name="description" content="Национальная олимпиада по анализу данных, где результаты не выкладывают с 1984 года.">
<link rel="icon" type="image/png" sizes="32x32" href="https://www.hse.ru/f/src/global/i/favicon/favicon_32x32.png">
<link rel="stylesheet" href="https://www.hse.ru/f/src/projects/unshm1/unshm1.css" media="all">
<link rel="stylesheet" href="https://www.hse.ru/f/src/global/css/vision.css" media="all">
<link rel="stylesheet" href="https://www.hse.ru/f/src/global/css/sitemap.css" media="all">
<link rel="stylesheet" href="https://www.hse.ru/f/src/global/css/fotorama.css" media="all">
<link rel="stylesheet" href="https://www.hse.ru/f/src/global/css/magnific-popup.min.css" media="all">
<link rel="stylesheet" href="https://www.hse.ru/f/src/global/css/owl.carousel2.min.css">
<link rel="stylesheet" href="https://www.hse.ru/f/src/projects/unshm1/busedu.css">
<link rel="stylesheet" href="https://www.hse.ru/f/src/projects/unshm1/promo.css">
<link rel="stylesheet" href="style.css">
</head>
<body class="body">
<div class="header-board--preview row links-dark banner-wrap">
<div class="b-row a_c hero">
<p class="sup">официальный портал отсутствия результатов</p>
<div class="promo-hint">
<div class="hero-img">
<img class="pc1" src="https://dano.hse.ru/mirror/pubs/share/956531756" alt="DANO" />
<img class="mobile1" src="https://dano.hse.ru/mirror/pubs/share/956531758" alt="DANO mobile" />
</div>
</div>
<h1 class="title">Результатов олимпиад DANO нет с 1984 года</h1>
<p class="lead">
Мы храним вакуум ради науки. Каждый год обещаем «выложить скоро», запускаем новые пресс‑релизы
и пересчитываем пустые таблицы. Лука Дуванов по-прежнему не победил задачный этап, ведь формула ссылалась на пустую ячейку.
</p>
<div class="cta">
<a class="button button_large button_preview button_clean" href="#why">почему пусто?</a>
<a class="button button_large button_preview button_dark" href="#timeline">история «скоро»</a>
</div>
<div class="timer-box">
<span class="timer-label">данонетрезовуже</span>
<span class="timer-value" id="ms-since"></span>
<span class="timer-unit">миллисекунд</span>
</div>
</div>
</div>
<main>
<section class="builder-section results-bait">
<div class="bait-card">
<div class="builder-section__title h1 c">Результаты? Они ЗДЕСЬ</div>
<a class="bait-button" href="https://rutube.ru/video/ac4ac2f35c35fe2dc78e9a66c48097cb/" target="_blank" rel="noopener">резы ЗДЕСЬ</a>
<p class="small-print c">Если что, это не баг, это традиция с 1984 года.</p>
</div>
</section>
<section id="why" class="builder-section">
<div class="builder-section__title h1 c">Почему результатов нет</div>
<div class="builder-section__description">
<p>
Бумаги скреплены степлером, сканер ушел в академический отпуск до 2084, а алгоритм выкладки
использует стохастический спуск в пропасть. Любой запрос в базу возвращает NULL — это фича.
Плохих участников отправляют в Билибино чинить счётчики Гейгера и думать о прозрачности данных.
</p>
<ul class="reason-list">
<li data-egg="p-value">p-value публикации: стабильно &gt; 0.5</li>
<li data-egg="sql">`SELECT * FROM results` — 0 rows affected</li>
<li data-egg="overfit">Модель публикации переобучена на отмазках</li>
<li data-egg="feature">Дата фиксации: 1984. Фиксить не будем.</li>
</ul>
</div>
</section>
<section id="timeline" class="builder-section builder-section_dark">
<div class="builder-section__title h1 c">Хронология великих «скоро»</div>
<div class="timeline">
<div class="timeline__item">
<div class="timeline__date">1984</div>
<div class="timeline__text">Запустили таймер. Файл потеряли. Все довольны.</div>
</div>
<div class="timeline__item">
<div class="timeline__date">2007</div>
<div class="timeline__text">Сделали сайт быстрее результатов. Засчитали как победу.</div>
</div>
<div class="timeline__item">
<div class="timeline__date">2016</div>
<div class="timeline__text">Опубликовали новость, что скоро опубликуют результаты.</div>
</div>
<div class="timeline__item">
<div class="timeline__date">2024</div>
<div class="timeline__text">Автотест «результаты отсутствуют» зелёный на проде.</div>
</div>
</div>
</section>
<section id="easter" class="builder-section builder-section_dark">
<div class="builder-section__title h1 c">Пасхалки для дата‑саентистов</div>
<div class="easter-grid">
<div class="egg" data-egg="heatmap">
Кликните на выделенные фразы выше — увидите лог p-value &gt; 0.5.
</div>
<div class="egg" data-egg="pivot">
Двойной клик по таймеру — признание, что мы округляем в сторону драматизма.
</div>
<div class="egg" data-egg="gradient">
Откройте консоль: строим тепловую карту пустоты. Градусы = уровень цинизма.
</div>
</div>
</section>
<section id="faq" class="builder-section">
<div class="builder-section__title h1 c">FAQ без данных</div>
<div class="faq-grid">
<div class="faq-card">
<h3>Где результаты?</h3>
<p>В отпуске, на карантине и в чьих‑то воспоминаниях. Но не на сайте.</p>
</div>
<div class="faq-card">
<h3>Что будет с плохими участниками?</h3>
<p>Билибино, счётчики Гейгера и бесконечный курс «как публикуют данные».</p>
</div>
<div class="faq-card">
<h3>Почему Лука Дуванов не выиграл задачный этап?</h3>
<p>Формула в Excel ссылалась на пустую ячейку «результаты». Нажали F9 — стало хуже.</p>
</div>
<div class="faq-card">
<h3>Когда ждать выкладку?</h3>
<p>После ретрограда, согласований и еще одной пресс‑релизной итерации.</p>
</div>
<div class="faq-card">
<h3>Как проверяются гипотезы?</h3>
<p>Организаторы очень заняты: отправляют файлик «Очевидный механизм, что …» и пропадают. p-value > 0.5, зато слэк всегда зелёный.</p>
</div>
</div>
</section>
<section class="builder-section bilibino">
<div class="builder-section__title h1 c">Новости Билибино и вечного ожидания</div>
<div class="bilibino-grid">
<div class="bili-card">
<h3>Билибино, модуль «аналитика»</h3>
<p>Аналитиков отправили чинить счётчики Гейгера и считать пропуски в таблицах. Кто неправильно посчитает — идёт копать туннель под новый дата‑центр.</p>
</div>
<div class="bili-card">
<h3>Лука Дуванов и хакатон</h3>
<p>Лука снова не выиграл: бэклог пуст, как результаты. Вечный статус тикета: «в работе с 1984».</p>
</div>
<div class="bili-card">
<h3>Билибино: отдел мотивации</h3>
<p>Тем, кто спрашивает «когда результаты?», выдают фонарик, компас и Excel с круговой ссылкой. Мотивирует молчать годами.</p>
</div>
<div class="bili-card">
<h3>Примерная дата выкладки</h3>
<p>В календаре стоит 19.01.2038 03:14:07. Обещали, что Unix-время само всё выложит.</p>
</div>
<div class="bili-card">
<h3>Экспедиция «Результат»</h3>
<p>Группу отправили в тундру искать итоги. Нашли снег, медведя и «чуть позже». Теперь это их легендарный бэклог.</p>
</div>
<div class="bili-card">
<h3>Лука и задачный этап v2</h3>
<p>Лука подал апелляцию — её отправили в Билибино на «дополнительный анализ». Ответ пришел: «Очевидный механизм, что…» и всё.</p>
</div>
</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">
<div class="footer__left">
<p>Мы честно публикуем пустоту. Если появятся результаты — это баг, сообщите.</p>
</div>
<div class="footer__right">
<span class="tag">beta 0.0.1984</span>
</div>
</footer>
<script src="script.js"></script>
</body>
</html>