Чекер — это специальная программа, используемая для проверки решений. Он запускается после завершения программы участника и определяет, является ли его ответ правильным. Чекеру доступны три файла: файл с входными данными (input.txt), файл с правильным ответом (answer.txt) и файл с ответом участника (output.txt).
Eolymp предлагает несколько встроенных чекеров, но вы также можете написать собственный чекер на одном из поддерживаемых языков программирования.
Чтобы настроить чекер для вашей задачи, выполните следующие шаги:
Откройте консоль и выберите пространство, в котором размещена задача.
Перейдите в раздел Задачи в левом меню.
Выберите задачу, которую хотите изменить.
Перейдите в раздел Тестирование в меню задачи.
Нажмите на Чекер, чтобы настроить его.
Рис. 1. Форма настройки чекера
Если для проверки используется интерактор, вы можете отключить чекер. В этом случае именно интерактор будет определять правильность ответа. Если ни чекер, ни интерактор не настроены, процесс тестирования завершится с ошибкой.
Этот чекер сравнивает файлы answer.txt и output.txt построчно. Если хотя бы один символ (байт) отличается, ответ участника будет считаться неправильным.
Чтобы облегчить форматирование для участников, чекер игнорирует:
Пробелы и табуляцию в конце каждой строки.
Пустые строки в конце файла.
Используйте этот чекер, если ответ участника должен точно соответствовать ожидаемому (файлы output.txt и answer.txt должны быть идентичны).
Чекер токенов сравнивает файлы answer.txt и output.txt по словам или числам. Он определяет способ сравнения в зависимости от типа данных в файле answer.txt. Если в answer.txt содержится число, в output.txt также должно быть число; если в answer.txt содержится строка, в output.txt должна быть строка. Числа сравниваются с заданной точностью, а строки сравниваются без учета регистра (например, "AA" == "aa").
При использовании этого чекера необходимо указать:
Точность для сравнения чисел.
Учитывать ли регистр при сравнении строк.
Для сравнения чисел используется следующая формула:
Где:
— ответ участника.
— правильный ответ.
— параметр точности, указанный в задаче.
Если , формула изменяется на $|A| ≤ \epsilon. Для сравнения чисел используется тип данных long double` (float64).
Этот чекер идеален для задач, где требуется сравнение значимых токенов (слов или чисел), игнорируя пробелы и форматирование. Однако для задач с большими объемами данных он может быть медленным. В таких случаях рекомендуется использовать построчный чекер или написать собственный.
Вы также можете написать собственный чекер, выбрав опцию "Сравнение с помощью программы". Программа-чекер запускается после завершения решения участника, но только в том случае, если программа участника завершилась успешно, без ошибок, превышения лимита времени или памяти. Это гарантирует, что система получила полный вывод.
Чекер компилируется и запускается с такими аргументами:
Файл с входными данными (input.txt).
Файл с ответом участника (output.txt).
Файл с правильным ответом (answer.txt).
Пример команды для запуска чекера:
checker input.txt output.txt answer.txt
В C++ эти параметры можно получить через второй параметр функции main.
Чекер должен возвращать код завершения 0, если ответ участника правильный. Любой другой код завершения будет означать, что ответ неверен.