Турниры с токенами
Навигация: Главная страница/Система ejudge/Использование/Турниры с токенами
Турнир с токенами - это разновидность турнира с полной проверкой решений участников во время турнира, но с неполной обратной связью. Решения участников проверяются на всех тестах непосредственно во время тура (в системе ejudge это - турниры типа ACM или KIROV, но не типа OLYMPIAD). По умолчанию участник имеет доступ к ограниченной информации о прохождении программой тестов, но может получить более полную информацию, потратив свои токены. Каждому участнику выдается ограниченное количество токенов в начале турнира, в течение турнира токены могут периодически пополняться. В системе ejudge токены по каждой задаче получаются и тратятся независимо от других задач.
Система ejudge поддерживает турниры с токенами, начиная с версии 3.2.0. Рассмотрим пример настройки турнира с токенами в ejudge.
Пусть в турнире есть две задачи: A, в которой 2 предварительных теста и 20 финальных, и B, в которой 3 предварительных теста и 25 финальных. В ходе турнира участник может видеть протокол тестирования на предварительных тестах и получает результат проверки только на предварительных тестах. После окончания турнира участник сможет видеть все. Тогда настройки задачи A и B будут примерно такими:
[problem] short_name = "A" long_name = "Задача A" full_score = 100 # полное решение - 100 баллов full_user_score = 0 # решение на предварительных тестах получает 0 баллов test_score = 5 # по 5 баллов на основные тесты test_score_list = "0 0" # предварительные тесты стоят 0 баллов open_tests = "1-2:full,3-22:hidden" # во время турнира показывать только первые два теста final_open_tests = "1-22:full" # после окончания показывать все [problem] short_name = "B" long_name = "Задача B" full_score = 100 # полное решение - 100 баллов full_user_score = 0 # решение на предварительных тестах получает 0 баллов test_score = 4 # по 4 балла на основные тесты test_score_list = "0 0 0" # предварительные тесты стоят 0 баллов open_tests = "1-3:full,4-28:hidden" # во время турнира показывать только первые два теста final_open_tests = "1-28:full" # после окончания показывать все
Для настройки турнира с токенами необходимо в настройки задач добавить спецификацию для начального числа токенов и дополнительной информации, показываемой при использовании токена. Например, по каждой задаче изначально дается 5 токенов, каждый час добавляется по одному токену, а потратив один токен можно увидеть балл, который получила задача на полном тестировании, и посмотреть вердикты прохождения задачи на всех тестах. Такая спецификация задается следующим образом:
tokens = "5+1/1h-1/FinalScore,TokenOpenTests"
Спецификация TokenOpenTests указывает, что для показа протокола в случае использованного токена нужно использовать спецификацию видимости token_open_tests. В данном примере она может быть такой:
token_open_tests = "1-22:brief"