Difference between revisions of "Gvaluer"
Line 24: | Line 24: | ||
group_definition : "group" GROUP_ID "{" { group_option } "}" ; | group_definition : "group" GROUP_ID "{" { group_option } "}" ; | ||
group_option : | group_option : | ||
− | "tests" FIRST_TEST_NUM "-" LAST_TEST_NUM ";" /* определяет диапазон номеров тестов в этой группе */ | + | "tests" FIRST_TEST_NUM "-" LAST_TEST_NUM ";" /* определяет диапазон номеров тестов в этой группе */ |
− | | "score" SCORE ";" | + | | "score" SCORE ";" /* определяет балл за группу тестов */ |
− | | "test_score" SCORE ";" | + | | "test_score" SCORE ";" /* определяет балл за один тест */ |
− | | "requires" GROUP_ID { "," GROUP_ID } ";" | + | | "requires" GROUP_ID { "," GROUP_ID } ";" /* перечисляет группы тестов, от которых зависит данная группа тестов */ |
− | | "offline" ";" | + | | "offline" ";" /* тесты с off-line проверкой */ |
− | | "sets_marked" ";" | + | | "sets_marked" ";" /* установить флаг marked, если группа прошла (с [[Изменения в версии 2.3.27|2.3.27]]) */ |
− | | "skip" ";" | + | | "skip" ";" /* безусловно пропустить данную группу тестов (с [[Изменения в версии 2.3.27|2.3.27]]) */ |
+ | | "sets_marked_if_passed" GROUP_ID { "," GROUP_ID } ";" /* установить флаг marked, если прошли указанные группы тестов (с [[Изменения в версии 2.3.28|2.3.28]]) */ | ||
+ | | "pass_if_count" NUM ";" /* считать группу тестов прошедшей, если в ней прошло NUM тестов (с [[Изменения в версии 2.3.28|2.3.28]]) */ | ||
; | ; | ||
Revision as of 16:10, 5 October 2013
Навигация: Главная страница/Система 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 : { group_definition } EOF ; 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) */ ;
Пример файла приведен далее
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; }