Чекер задачи

Чекер — это специальная программа, используемая для проверки решений. Он запускается после завершения программы участника и определяет, является ли его ответ правильным. Чекеру доступны три файла: файл с входными данными (input.txt), файл с правильным ответом (answer.txt) и файл с ответом участника (output.txt).

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

Как настроить чекер

Чтобы настроить чекер для вашей задачи, выполните следующие шаги:

  1. Откройте консоль и выберите пространство, в котором размещена задача.

  2. Перейдите в раздел Задачи в левом меню.

  3. Выберите задачу, которую хотите изменить.

  4. Перейдите в раздел Тестирование в меню задачи.

Нажмите на Чекер, чтобы настроить его.

Рис. 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).

Этот чекер идеален для задач, где требуется сравнение значимых токенов (слов или чисел), игнорируя пробелы и форматирование. Однако для задач с большими объемами данных он может быть медленным. В таких случаях рекомендуется использовать построчный чекер или написать собственный.

Собственный программный чекер

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

Чекер компилируется и запускается с такими аргументами:

  1. Файл с входными данными (input.txt).

  2. Файл с ответом участника (output.txt).

  3. Файл с правильным ответом (answer.txt).

Пример команды для запуска чекера:

checker input.txt output.txt answer.txt

В C++ эти параметры можно получить через второй параметр функции main.

Чекер должен возвращать код завершения 0, если ответ участника правильный. Любой другой код завершения будет означать, что ответ неверен.