Difference between revisions of "Gvaluer"
(...) |
|||
(One intermediate revision by the same user not shown) | |||
Line 1: | Line 1: | ||
Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Использование]]/[[Оценивающие программы]]/[[gvaluer]] | Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Использование]]/[[Оценивающие программы]]/[[gvaluer]] | ||
− | |||
− | |||
=== Компиляция === | === Компиляция === | ||
Line 9: | Line 7: | ||
Откомпилированную программу можно поместить либо в каталог задачи, либо в каталог <tt>problems</tt> турнира (то есть родительский каталог относительно каталога задачи). | Откомпилированную программу можно поместить либо в каталог задачи, либо в каталог <tt>problems</tt> турнира (то есть родительский каталог относительно каталога задачи). | ||
+ | |||
+ | С версии [[изменения в версии 3.13.0|3.13.0]] и выше нет необходимости компилировать программу самостоятельно, | ||
+ | она инсталлируется в каталог проверяющих программ. | ||
=== Настройка [[serve.cfg]] === | === Настройка [[serve.cfg]] === | ||
Line 14: | Line 15: | ||
Если программа gvaluer помещена в каталог <tt>problems</tt>, то раздел определения задачи должен содержать следующую строку | Если программа gvaluer помещена в каталог <tt>problems</tt>, то раздел определения задачи должен содержать следующую строку | ||
[[serve.cfg:problem:valuer_cmd|valuer_cmd]] = "../gvaluer" | [[serve.cfg:problem:valuer_cmd|valuer_cmd]] = "../gvaluer" | ||
+ | |||
+ | С версии [[изменения в версии 3.13.0|3.13.0]] и выше рекомендуется использовать стандартную программу. | ||
+ | |||
+ | [[serve.cfg:problem:standard_valuer|standard_valuer]] = "gvaluer" | ||
В каталоге задачи необходимо создать файл <tt>valuer.cfg</tt>, в котором описывается структура групп тестов. | В каталоге задачи необходимо создать файл <tt>valuer.cfg</tt>, в котором описывается структура групп тестов. | ||
Line 44: | Line 49: | ||
| "test_all" ";" /* тестировать на всех тестах даже группы с групповой оценкой (с [[Изменения в версии 3.3.0|3.3.0]]) */ | | "test_all" ";" /* тестировать на всех тестах даже группы с групповой оценкой (с [[Изменения в версии 3.3.0|3.3.0]]) */ | ||
| "0_if" TEST { "," TEST } ";" /* оценить группу в 0 баллов, если прошли только указанные тесты (с [[Изменения в версии 3.6.0|3.6.0]]) */ | | "0_if" TEST { "," TEST } ";" /* оценить группу в 0 баллов, если прошли только указанные тесты (с [[Изменения в версии 3.6.0|3.6.0]]) */ | ||
+ | | "0_if_subset" TEST { "," TEST } ";" /* оценить группу в 0 баллов, если прошли только тесты из указанного множества тестов (с [[Изменения в версии 3.10.2|3.10.2]]) */ | ||
; | ; | ||
Line 70: | Line 76: | ||
offline; | offline; | ||
} | } | ||
+ | |||
+ | === Переменные окружения === | ||
+ | |||
+ | {| class="wikitable" style="margin:auto" | ||
+ | |+ Переменные окружения | ||
+ | |- | ||
+ | ! Имя !! значение !! описание | ||
+ | |- | ||
+ | | <code>EJUDGE</code> || любое значение || должна быть установлена | ||
+ | |- | ||
+ | | <code>EJUDGE_INTERACTIVE</code> || любое значение || если установлена, см. <code>[[serve.cfg:problem:interactive_valuer|interactive_valuer]]</code> | ||
+ | |- | ||
+ | | <code>EJUDGE_REJUDGE</code> || любое значение || если установлена, то посылка перепроверяется | ||
+ | |- | ||
+ | | <code>EJUDGE_USER_SCORE</code> || любое значение || если установлена, см <code>[[Serve.cfg:global:separate_user_score|separate_user_score]]</code> | ||
+ | |- | ||
+ | | <code>EJUDGE_MARKED</code> || любое значение || если установлена, см. <code>[[Serve.cfg:problem:valuer sets marked|valuer_sets_marked]]</code> | ||
+ | |- | ||
+ | | <code>EJUDGE_GROUP_MERGE</code> || любое значение || если установлена, см. <code>[[Serve.cfg:problem:enable_group_merge|enable_group_merge]]</code> | ||
+ | |- | ||
+ | | <code>EJUDGE_LOCALE</code> || ID языка (int) || если установлена, см. <code>[[serve.cfg:global:checker_locale|checker_locale]]</code> | ||
+ | |} |
Latest revision as of 10:19, 29 December 2024
Навигация: Главная страница/Система ejudge/Использование/Оценивающие программы/gvaluer
Компиляция
Программа находится в каталоге checkers исходных текстов ejudge. Для компиляции необходим компилятор C++ с поддержкой C++11 (например, g++ 4.7 и выше).
g++ -O2 -Wall -std=gnu++11 gvaluer.cpp -ogvaluer
Откомпилированную программу можно поместить либо в каталог задачи, либо в каталог problems турнира (то есть родительский каталог относительно каталога задачи).
С версии 3.13.0 и выше нет необходимости компилировать программу самостоятельно, она инсталлируется в каталог проверяющих программ.
Настройка serve.cfg
Если программа gvaluer помещена в каталог problems, то раздел определения задачи должен содержать следующую строку
valuer_cmd = "../gvaluer"
С версии 3.13.0 и выше рекомендуется использовать стандартную программу.
standard_valuer = "gvaluer"
В каталоге задачи необходимо создать файл valuer.cfg, в котором описывается структура групп тестов.
Файл valuer.cfg
Файл описывает структуру групп тестов. Файл имеет свободный формат, то есть элементы описания могут быть разделены произвольным количеством пробельных символов. Символ # используется для обозначения начала комментария. Символы, начиная от # и до конца текущей строки игнорируются. Синтаксис файла описывается следующей грамматикой:
file : [ global_definition ] { group_definition } EOF ; global_definition : "global" "{" { global_option } "}" ; /* определяет настройки для всех групп тестов (с 3.6.1) */ global_option : "stat_to_users" /* выводить информацию о прохождении всех групп для участников турнира */ | "stat_to_judges" /* выводить информацию о прохождении всех групп для привилегированных пользователей */ ; group_definition : "group" GROUP_ID "{" { group_option } "}" ; group_option : "tests" FIRST_TEST_NUM "-" LAST_TEST_NUM ";" /* определяет диапазон номеров тестов в этой группе */ | "score" SCORE ";" /* определяет балл за группу тестов */ | "test_score" SCORE ";" /* определяет балл за один тест */ | "requires" GROUP_ID { "," GROUP_ID } ";" /* перечисляет группы тестов, от которых зависит данная группа тестов */ | "offline" ";" /* тесты с off-line проверкой */ | "sets_marked" ";" /* установить флаг marked, если группа прошла (с 2.3.27) */ | "skip" ";" /* безусловно пропустить данную группу тестов (с 2.3.27) */ | "sets_marked_if_passed" GROUP_ID { "," GROUP_ID } ";" /* установить флаг marked, если прошли указанные группы тестов (с 2.3.28) */ | "pass_if_count" NUM ";" /* считать группу тестов прошедшей, если в ней прошло NUM тестов (с 2.3.28) */ | "skip_if_not_rejudge" ";" /* пропустить группу тестов, если это не повторное тестирование посылки (REJUDGE) (с 3.0) */ | "stat_to_judges" ";" /* вывести статистику о прохождении данной группы в файл комментариев для судей (с 3.3.0) */ | "stat_to_users" ";" /* вывести статистику о прохождении данной группы в файл комментариев для участников турнира (с 3.6.1) */ | "user_status" STATUS ";" /* установить пользовательский статус тестирования в указанный, если прошла данная группа тестов (с 3.3.0) */ | "test_all" ";" /* тестировать на всех тестах даже группы с групповой оценкой (с 3.3.0) */ | "0_if" TEST { "," TEST } ";" /* оценить группу в 0 баллов, если прошли только указанные тесты (с 3.6.0) */ | "0_if_subset" TEST { "," TEST } ";" /* оценить группу в 0 баллов, если прошли только тесты из указанного множества тестов (с 3.10.2) */ ;
Пример файла приведен далее
group 0 { tests 1-2; score 0; test_score 0; } group 1 { tests 3-18; score 20; } group 2 { tests 19-26; score 20; } group 3 { tests 27-42; score 60; requires 1,2; offline; }
Переменные окружения
Имя | значение | описание |
---|---|---|
EJUDGE |
любое значение | должна быть установлена |
EJUDGE_INTERACTIVE |
любое значение | если установлена, см. interactive_valuer
|
EJUDGE_REJUDGE |
любое значение | если установлена, то посылка перепроверяется |
EJUDGE_USER_SCORE |
любое значение | если установлена, см separate_user_score
|
EJUDGE_MARKED |
любое значение | если установлена, см. valuer_sets_marked
|
EJUDGE_GROUP_MERGE |
любое значение | если установлена, см. enable_group_merge
|
EJUDGE_LOCALE |
ID языка (int) | если установлена, см. checker_locale
|