Турнир №1

Итоги приняты личный турнир на выбывание

Первый тестовый турнир на Арене

Кубок чемпиона Арены
Победитель турнира
Победитель получил
инферы 800 +35 рейтинга
Призовой фонд инферы 1 260
Участников 12 из 24 мест
Туров 3
Награды по турам
Тур Победителю матча Проигравшему Лимит
инферырейтингинферырейтинг
Групповой тур · 6 категорий инферы 45 +5 — +3 10 мин
Полуфинал · 5 категорий инферы 190 +10 инферы 45 +7 10 мин
Гранд-финал · 3 категории инферы 380 +10 инферы 45 +7 10 мин
Чемпиону турнира сверху инферы 185 +10 ———

Инферы и рейтинг начисляются одной суммой после турнира, когда админ принимает отчёт.

Регистрация закрыта.

Сетка

Сетку можно тянуть мышью ←→

Групповой тур

6 категорий на выбор
Победителю тура инферы 45 +5 рейтинга
Проигравшему +3 рейтинга

Полуфинал

5 категорий на выбор
Победителю тура инферы 190 +10 рейтинга
Проигравшему инферы 45 +7 рейтинга

Гранд-финал

3 категории на выбор
Победителю тура инферы 380 +10 рейтинга
Проигравшему инферы 45 +7 рейтинга
Сверху чемпиону турнира инферы 185 +10 рейтинга

Как всё проходит

  1. 1 Регистрация и чек-ин. В день турнира нужно нажать «Я на месте» — с 17:00 до 18:00 по Москве. Кто не отметился, в сетку не попадает, даже если был зарегистрирован.
  2. 2 Выбор категории. Отмечаясь, вы выбираете категорию первого тура. Рядом с каждой видно, сколько человек её уже выбрали, и менять выбор можно до закрытия чек-ина. Группы первого тура составляют из тех, кто выбрал одно и то же. Если по вашей категории не набралось людей на целую группу, вы попадёте в смешанную группу — она играет категорию того участника, у кого рейтинг выше. Кто не выбрал ничего, получает категорию случайно.
  3. 3 Жеребьёвка. После закрытия чек-ина состав групп определяется жребием. Жребий считается от опубликованного числа — зерна, и любой может пересчитать его сам скриптом внизу этой страницы. Никто не проходит в следующий тур без матча: если участников нечётное число, вместо пропуска появляется группа из трёх человек.
  4. 4 Первый тур — группы по 2–4 человека. Все в группе решают одну и ту же задачу. Побеждает тот, кто первым сдал верный флаг.
    Если выигрываете — проходите в следующий тур. Если проигрываете — выбываете из турнира сразу, дорешивать задачу не нужно.
  5. 5 Дальше — матчи один на один, до Гранд-финала. Перед каждым матчем вы с соперником по очереди убираете категории из списка, пока не останется одна — её задачу вы оба и решаете. Первым убирает тот, у кого рейтинг ниже; последний ход остаётся за тем, у кого рейтинг выше. Если не успели сделать ход до начала тура, его сделает система. До начала матча видны только названия категорий, сами задачи не показываются.
    Если выигрываете — проходите в следующий тур. Если проигрываете — выбываете.
  6. 6 Если задачу не решил никто. Время матча — ровно лимит тура, без продлений. Когда оно вышло и флаг никто не сдал, дальше проходит участник с бо́льшим рейтингом платформы — тем, который был зафиксирован в момент жеребьёвки. Если вы не открыли свой матч в первые 5 минут, а соперник открыл, вам засчитывается поражение.
  7. 7 Призы. По ходу турнира ничего не начисляется — страница показывает только накопленную сумму. Инферы и рейтинг приходят одним начислением после турнира, когда администратор примет отчёт.

У каждого участника свой флаг. Чужой флаг не подойдёт, а попытка сдать его видна в отчёте и засчитывается как поражение в матче.

Жеребьёвка — проверьте сами

Зерно 89c65725a842d9701adc164f6bb6cc30, проведена 20.09 18:00 (мск). Скрипт ниже воспроизводит сетку первого тура на вашей машине: если он выведет «совпало», значит состав групп получен из зерна, а не выбран руками.

Показать скрипт на Python
import hashlib, hmac

SEED = "89c65725a842d9701adc164f6bb6cc30"
IDS = [1, 65, 76, 155, 164, 254, 344, 421, 452, 469, 475, 729]          # участники (id), как их взял сервер
SIZES = [2, 3, 3, 4]        # размеры групп первого тура
GROUPS = [[344, 729], [1, 164, 452], [475, 155, 76], [469, 421, 254, 65]]  # что получилось в сетке

def stream(seed, count):
    out, counter = [], 0
    while len(out) < count:
        block = hmac.new(seed.encode(), f"ctfinf-arena:{counter}".encode(),
                         hashlib.sha256).digest()
        out += [int.from_bytes(block[i:i + 4], "big") for i in range(0, 32, 4)]
        counter += 1
    return out[:count]

ids = sorted(IDS)
numbers = stream(SEED, len(ids) - 1)
for step, position in enumerate(range(len(ids) - 1, 0, -1)):
    target = numbers[step] % (position + 1)
    ids[position], ids[target] = ids[target], ids[position]

groups, cursor = [], 0
for size in SIZES:
    groups.append(ids[cursor:cursor + size])
    cursor += size

print(groups)
print("совпало" if groups == GROUPS else "НЕ совпало")

Нужен только стандартный Python 3 — ничего ставить не надо.

Правила

  • В матче все решают одну и ту же задачу. Проходит дальше тот, кто первым сдал верный флаг.
  • Первый тур — группы по 2–4 человека, из группы проходит один. Дальше — матчи один на один.
  • В туре несколько задач — по одной на категорию. Какую задачу играет ваш матч, определяете вы: в первом туре выбором категории на чек-ине, дальше — убирая категории по очереди с соперником.
  • Убирает первым тот, у кого рейтинг ниже, последний ход остаётся за тем, у кого рейтинг выше. Не сделанный вовремя ход система делает сама.
  • До начала матча видны только названия категорий. Названия задач не показываются.
  • Флаг у каждого участника свой. Сдача чужого флага — поражение в матче.
  • Никто не проходит в следующий тур без матча. При нечётном числе участников вместо пропуска составляется группа из трёх человек.
  • Время матча — ровно лимит тура, без автоматических продлений. Если к его концу задачу никто не решил, дальше проходит участник с бо́льшим рейтингом платформы на момент жеребьёвки.
  • Не открыл свой матч в первые 5 минут — поражение, если соперник на месте.
  • В сетку попадают только отметившиеся на чек-ине.
  • Инферы и рейтинг начисляются одной суммой после турнира: до принятия отчёта админ может оштрафовать или дисквалифицировать участника.

Что происходило

  • Отчёт принят: начислено 1160 инферов и 100 рейтинга.
  • Штраф chebureck_777: 100 инферов, 5 рейтинга — reverse решен ИИ
  • Турнир завершён. Чемпион Арены — AlxGonin.
  • Тур 3: дальше проходит AlxGonin (никто не решил, прошёл больший рейтинг).
  • Тур 3 стартовал: 1 матч(ей), 10 минут.
  • Тур 3 стартовал: 1 матч(ей), 10 минут.
  • Матч 3#1: после банов играют «web».
  • Тур 2 завершён.
  • Тур 2: дальше проходит AlxGonin (никто не решил, прошёл больший рейтинг).
  • Тур 2: chebureck_777 решил задачу за 5:39 и проходит дальше.
  • Тур 2 стартовал: 2 матч(ей), 10 минут.
  • Тур 2 стартовал: 2 матч(ей), 10 минут.
  • Матч 2#2: после банов играют «pwn».
  • Матч 2#1: после банов играют «reverse».
  • Тур 1 завершён.
  • Тур 1: bas1c1 решил задачу за 5:45 и проходит дальше.
  • Тур 1: Sir1to решил задачу за 4:25 и проходит дальше.
  • Тур 1: chebureck_777 решил задачу за 2:39 и проходит дальше.
  • Тур 1: AlxGonin решил задачу за 2:12 и проходит дальше.
  • Тур 1 стартовал: 4 матч(ей), 10 минут.
  • Статус турнира: running.
  • Жеребьёвка проведена: 12 участников, 3 тур(ов), зерно 89c65725…
  • Статус турнира: checkin.
  • Статус турнира: registration.
  • Кубок Арены у «talachevzr».