Предисловие
За последнее время было предложено достаточно много различных способов, методов и советов по борьбе с читерами, которые отчасти могут дать положительные результаты на короткой дистанции, но на перспективе ситуация может перейти в другую плоскость, в которой читеры станут только умнее и найдут нужные "ключи" к тому, чтобы продолжить быть безнаказанными на этой платформе.
Почему основные идеи не работают в долгосрочной перспективе
Анти-плагиат и тайминги
Быстрый код от LLM выглядит "человечески" за счёт стандартизации стиля кода, заготовок кода функций, использования сокращенных названий переменных и т.д., а адекватные задержки между отправками довольно легко эмитировать, контролируя время отправки других участников.
SMS-верификация
Онлайн-сервисы одноразовых номеров, аренда дополнительных внутренних номеров у операторов связи сводят её к формальности. Поймите, что, кто заходит на CodeForces или хотя бы имеет немного желания в чём-то разобраться, точно догадается, что уже давно на рынке практикуются онлайн-сервисы для одноразовых смс-активаций или верификации по звонку при необходимости. Стоит это сущие копейки, можно арендовать номер на N-ый период времени или даже в том же МегаФоне (кто из России, тот возможно понимает) выпустить дополнительные номера на родную сим карту за какие-то 2 рубля в сутки. Такая система защиты по номеру телефона не будет на текущий момент совершенной и точно не сдержит нарушителя.
Жёсткий бан
Пользователь, потеряв рейтинг на начале его пути, просто создаст новый аккаунт и вся история начнётся заново, а те, кто этим промышляют уже давно и имеют высокий рейтинг, уже в курсе о ключевых моментах, на которые стоит обращать внимание, чтобы не отправиться в бан.
Основная идея — не банить, а скрывать!
Идея про введение системы репортов ранее уже выдвигалась, но я хочу её форсировать. Давайте введём систему отложенных репортов и лайков от доверенных пользователей (>2000 elo), благодаря которым будет коррелироваться траст фактор условного подозреваемого. Мы не будем банить пользователя за то, что он проявил подозрительную активность в каком-то из раундов. Какой смысл нам это делать, заставлять думать, на какой задаче и в чём именно он "прокололся", когда можно просто заставить его верить в то, что он в очередной раз не попался в руки правосудия и ему удалось всех обмануть. В то же время его аккаунт будет скрыто помечаться так называемой меткой и все последующие соревнования в его лице будут проходить отдельно от общего пула участников, но при этом читер продолжит видеть "свой" рейтинг и место в общем топе. Его очки не будут учитываться в основной таблице при подсчёте позиций и рейтинга честных участников. Аномальные участники будут перемещаться в "скрытый пул", в котором будут соревноваться только между собой.
Система доверенных репортов
Кто сможет репортить?
Участники с рейтингом более 2000 очков
Пользователи с высоким уровнем вклада в сообщество платформы
Доверенные участники и координаторы
Форма репорта
- Подозрение в использовании ИИ? [Да/Нет]
- Ключевые аномалии (тайминги, стиль кода, нетипичное решение)
- Краткий комментарий
Взвешивание репортов
Репортящий получает "вес", который будет зависеть от его текущего рейтинга, даты регистрации, вклада, точности прошлых репортов и чем выше будут его показатели, тем больше уровень доверия. Соответственно репорты на участников с высоким уровнем доверия не будут сильно влиять на их репутацию, если их не репортят точно такие же участники.
Система лайков и репутации
- Лайки могут ставить абсолютно любые участники с рейтингом и регистрацией не менее 7-ми дней, после окончания раунда.
- Оценка по понятности и читаемости кода, наличии комментариев и их полноте
Механика скрытого пула
flowchart LR
A[Участник] --> B[Соревнование]
B --> C{Сбор данных}
C --> D[Trusted Reports]
C --> E[Лайки/Дизлайки]
C --> F[Телеметрия]
D & E & F --> G[Байес. модель]
G --> H{TF ≥ 0.5?}
H -- Да --> I[Скрытый пул]
H -- Нет --> J[Основной пул]
I --> K[Визуализация (только для читера)]
J --> L[Реальные результаты]
- До контеста собираются репорты и исторические данные
- Во время контеста проводим телеметрию: время разработки, частота отправок программ, навигация по страницам
- После байесовский движок, работающий на базе вероятностей, отталкиваясь от критериев, принимает окончательное решение о выборе пула
UI/UX для "скрытых" и "честных"
Честный участник видит привычный топ и не замечает скрытых "признаков"
Скрытый участник видит фейковые рейтинг и место в общем топе
Модераторы видят график траст фактора в динамике, карточки подозреваемых с подробным логом телеметрии
Система автоматического расчёта траст фактора
Траст фактор будет повышаться или понижаться после каждого завершенного контеста по итогу рассчитанной репутации за отведённый промежуток времени или повышаться в результате ручной проверки модератора.
Как вам идея? Пишите в комментариях, что думаете.









