Serve.cfg:problem:scoring checker

From EjudgeWiki

Навигация: Главная страница/Система ejudge/Использование/Конфигурационные файлы/serve.cfg/Конфигурационные параметры задач/scoring_checker

Редактирование элемента: страница "Editing contest", вкладка "Problems (serve.cfg)", блок "Abstract problems", поле "Checker calculates score", либо страница "Editing contest", вкладка "Problems (serve.cfg)", блок "Concrete problems", поле "Checker calculates score".

Поддерживаются задачи, в которых балл за задачу (или за каждый тест) выставляется проверяющей программой. Чекер может оценивать тест в любое количество баллов от 0 и до максимального балла за данный тест.

Для этого поддерживается конфигурационная переменная scoring_checker. Если эта переменная установлена в значение 1, то балл за тест будет проставляться чекером.

В турнирах по системе KIROV/OLYMPIAD чекер оценивает каждый тест по отдельности, и суммарный балл за задачу равен сумме оценок чекера по каждому тесту. В турнирах по системе MOSCOW балл за задачу равен оценке чекера первого непройденного теста (в этом случае, разумнее всего, чтобы у задачи был единственный тест).

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

0       OK
1       WA
2       PE
4       PE
5       WA

все остальные коды интерпретируются как Check failed.

Если чекер вернул OK, то тест/задача всегда получает полный балл. Если чекер вернул PE, то тест/задача получает 0. Если чекер вернул WA, то на стандартный поток вывода он должен записать единственное число - балл за тест/задачу. Кроме числа и пробельных символов в стандартный поток вывода ничего выводиться не должно (иначе - Check failed). Число должно быть >= 0 и меньше максимального балла за задачу. Если выведено другое число - Check failed.

Оценивающему чекеру передаются следующие переменные окружения:

  • EJUDGE всегда устанавливается в 1.
  • EJUDGE_SCORING_CHECKER всегда устанавливается в 1.
  • EJUDGE_MAX_SCORE устанавливается в максимальный балл за тест

(3.10.0).

В режиме enable_checker_token передаётся переменная окружения EJUDGE_CHECKER_TOKEN, равная 1.

Если установлена checker_locale, её значение передается в переменной окружения EJUDGE_LOCALE.

В режиме separate_user_score передается переменная окружения EJUDGE_USER_SCORE, равная 1.

В режиме enable_extended_info передаются следующие переменные окружения:

  • EJUDGE_USER_ID — идентификатор пользователя,

сдавшего это решение.

  • EJUDGE_CONTEST_ID — номер турнира.
  • EJUDGE_RUN_ID — номер посылки.
  • EJUDGE_TEST_NUM — номер теста.
  • EJUDGE_TEST_COUNT — количество тестов в задаче

(3.10.0).

  • EJUDGE_USER_LOGIN — логин пользователя,

сдавшего это решение.

  • EJUDGE_USER_NAME — имя пользователя,

сдавшего это решение.