Search
Write a publication
Pull to refresh

Codenrock запускает глобальный рейтинг участников хакатонов

Level of difficultyEasy
Reading time4 min
Views440

На Codenrock ежегодно проходит множество IT-соревнований: от хакатонов и ML-соревнований до CTF и турниров по спортивному программированию. Десятки тысяч человек выполняют задания, загружают решения, получают оценки, побеждают. Но до недавнего времени всё это оставалось в тени. А значит, пришло время это исправить.
 В очередном обновлении мы добавили:

  • Публичный пользовательский профиль с навыками, достижениями, медалями, сертификатами и графиком активности в соревнованиях.

  • Глобальный рейтинг пользователей Codenrock — агрегирует баллы и медали, полученные во всех соревнованиях на платформе. Он обеспечивает прозрачное сравнение результатов, помогает объективно отслеживать собственный прогресс и мотивирует регулярно участвовать в новых конкурсах.

Для работы над рейтингом мы пригласили команду SOUP SUPPORT — gamedev-студию, которая специализируется на создании виртуальных экономик и детальных симуляций. Они помогли нам разработать правила и протестировать их, чтобы система оценки была динамичной, стабильной и справедливой.

В этой статье мы расскажем, по каким алгоритмам работает рейтинг, как зарабатывать баллы, а также чем полезен такой рейтинг участникам и организаторам IT-соревнований.

Как устроен глобальный рейтинг

Раздел «Рейтинг» на Codenrock доступен всем и включает три категории:

  1. Спортивное программирование и алгоритмы

  2. ML и искусственный интеллект 

  3. Хакатоны — конкурсы по продуктовой разработке и решению бизнес-задачи.

Баллы

Баллы начисляются за каждое решение, которое получило оценку от автоматической системы или экспертов. Они отражают текущую активность участника. Алгоритм учитывает, каким именно образом были присуждены баллы, размер команды и возможные особенности конкретного мероприятия.

Анализ исходных данных. На первом этапе система анализирует базовые результаты участника в соревновании. Принцип расчета зависит от типа задания:

  • Автоматическая оценка в ML-соревнованиях или спортивном программировании. Алгоритм использует результат лучшей попытки конкурсанта и умножает его на коэффициент сложности задачи.

  • Судейство жюри. Для расчета используется средний балл суммарных оценок всех экспертов, которые выставили баллы решению участника.

Поправка на размер команды. Проект, оцененный в 100 баллов и сделанный одним разработчиком — это не то же самое, что прототип с аналогичной оценкой, но разработанный командой из 6 специалистов. Поэтому, чтобы обеспечить честность в распределении очков, алгоритм учитывает, сколько человек работало над решением.

\text{score}_{\text{team}} = \frac{\sum (\text{баллы} \times m_{\text{сложность}})}{\sqrt{N_{\text{участников}}}}

Эта формула позволяет справедливо сравнивать команды разных размеров: поощряет за сложные решения и снижает влияние слишком большого числа участников. 

Нормализация результата. На соревновании может быть разная система оценок по выбору организатора — от классических стобалльных шкал до нетипичных вариантов с 1000 баллов, к примеру. Поэтому для объективного сравнения результаты любых мероприятий приводятся к диапазону от нуля до единицы по следующей формуле:

s_{\text{норм}} = \frac{s_{\text{team}} - s_{\text{min}}}{s_{\text{max}} - s_{\text{min}}}

Финальный расчет. Нормализованные баллы умножаются на 100 и на средний коэффициент сложности всего конкурса, после чего прибавляются к рейтингу участника. Однако очки, полученные за соревнования — величина непостоянная. Каждую неделю они «сгорают» — уменьшаются по экспоненциальной кривой, и рейтинг пересчитывается:

\text{raw_points} = s_{\text{норм}} \times 100 \times \text{difficulty}_{\text{contest}}

Таким образом, старые достижения постепенно нивелируются, чтобы освободить место для новых и позволить «новичкам» на равных конкурировать с ветеранами. Но не стоит бояться, что баллы пропадут слишком быстро — коэффициенты подобраны таким образом, чтобы за год сгорела примерно лишь половина очков за конкретное соревнование.

Медали

Медаль — это несгораемая награда, которой отмечаются конкурсанты с самыми высоко оцененными решениями. Как и положено спортивным трофеям, они бывают трех типов:

  • Золотая — вручается всем, кто попал в топ-5% участников соревнования.

  • Серебряная — достается конкурсантам, вошедшим в топ-10%.

  • Бронзовая — заслуженный приз для тех, кто оказался среди 20% лучших.

Поэтому каждый пятый участник может рассчитывать на пополнение коллекции трофеев — отличная мотивация пробовать свои силы даже в сложных контестах. Присуждение наград не зависит от распределения призовых мест на  соревновании — медали всегда получают 20% лучших в каждом итоговом лидерборде мероприятия.

Такие награды не просто украшают профиль, но и прибавляют баллы к глобальному рейтингу. Чем выше уровень медали, тем больше её вклад. Эти очки сохраняются дольше: они начинают терять вес только через год после получения, что делает трофеи долгосрочной инвестицией в свой рейтинг.

Чтобы соответствовать правилам выдачи медалей, теперь по всем соревнованиям на Codenrock формируется публичный рейтинг вне зависимости от того, подводятся ли итоги автоматически или по решению жюри. Каждый сможет оценить свою позицию среди других участников и влияние достижений на общий рейтинг.

Зачем нужен рейтинг

До появления рейтинга все турниры на Codenrock существовали изолированно: у каждого соревнования был свой рейтинг, и успех в одном мероприятии никак не влиял на другие. Даже если участник побеждал в нескольких хакатонах подряд, этот успех оставался без внимания:

  • Организаторы могли не заметить опытного, талантливого и мотивированного специалиста. 

  • Участники команды недооценивали экспертизу тиммейта.

  • Сам пользователь не имел возможности поделиться своим прогрессом в соцсетях или резюме.

Глобальный рейтинг избавляет от этих проблем и решает еще несколько важных задач: 

  • Зеркало активности. Каждое соревнование работает на общую позицию в рейтинге. Даже если не удалось победить, оценка проекта увеличит количество баллов и позволит подняться в таблице вверх.

  • Прозрачность мастерства. Другим участникам, рекрутерам и заказчикам стало проще оценить уровень каждого пользователя, его вовлеченность и сферу интересов как по баллам «в моменте», так и по истории былых достижений в виде медалей.

  • Больше мотивации возвращаться. Приятно видеть, как очки растут, а медали копятся. Это отличный повод не пропускать новые события в любимой категории соревнований.

Шанс попасть в топ есть у каждого. Алгоритм настроен так, чтобы все участники могли быстро войти в число лучших, а затем поддерживать или улучшать свое положение. Не нужно регистрироваться на каждое соревнование только ради баллов, если оно не вызывает интереса.

Присоединяйтесь к Codenrock — регистрируйтесь, получайте медали и поднимайтесь в лидреборде. Подготовиться к новым IT-соревнованиям поможет «песочница» — раздел с evergreen-задачами по машинному обучению и алгоритмам. Отличный способ прокачать навыки, познакомиться с возможностями платформы и заработать баллы в глобальном рейтинге Codenrock.

Tags:
Hubs:
+5
Comments0

Articles