Difference between revisions of "Gvaluer"
(...) |
|||
| Line 1: | Line 1: | ||
Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Использование]]/[[Оценивающие программы]]/[[gvaluer]] | Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Использование]]/[[Оценивающие программы]]/[[gvaluer]] | ||
| − | |||
| − | |||
=== Компиляция === | === Компиляция === | ||
| Line 44: | Line 42: | ||
| "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]]) */ | ||
; | ; | ||
Revision as of 06:21, 25 March 2023
Навигация: Главная страница/Система ejudge/Использование/Оценивающие программы/gvaluer
Компиляция
Программа находится в каталоге checkers исходных текстов ejudge. Для компиляции необходим компилятор C++ с поддержкой C++11 (например, g++ 4.7 и выше).
g++ -O2 -Wall -std=gnu++11 gvaluer.cpp -ogvaluer
Откомпилированную программу можно поместить либо в каталог задачи, либо в каталог problems турнира (то есть родительский каталог относительно каталога задачи).
Настройка serve.cfg
Если программа gvaluer помещена в каталог problems, то раздел определения задачи должен содержать следующую строку
valuer_cmd = "../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;
}