Difference between revisions of "Оценивающие программы"

From EjudgeWiki
Line 2: Line 2:
  
 
Оценивающая программа предназначена для выставления оценки за решение участника при нестандартных системах оценивания. В стандартных системах оценивания KIROV или OLYMPIAD общее число баллов за задачу вычисляется суммированием числа баллов, полученных за все пройденные тесты. Дополнительно ejudge поддерживает выставление специальной оценки про совпадении множеств тестов. Тем не менее в более сложных ситуациях встроенных возможностей системы может не хватить.
 
Оценивающая программа предназначена для выставления оценки за решение участника при нестандартных системах оценивания. В стандартных системах оценивания KIROV или OLYMPIAD общее число баллов за задачу вычисляется суммированием числа баллов, полученных за все пройденные тесты. Дополнительно ejudge поддерживает выставление специальной оценки про совпадении множеств тестов. Тем не менее в более сложных ситуациях встроенных возможностей системы может не хватить.
 +
 +
=== Входные данные ===
  
 
Если установлена глобальная конфигурационная переменная <tt>[[Serve.cfg:global:separate_user_score|separate_user_score]]</tt>, переменная окружения <tt>EJUDGE_USER_SCORE</tt> устанавливается в значение <tt>1</tt>. В противном случае эта переменная окружения не устанавливается.
 
Если установлена глобальная конфигурационная переменная <tt>[[Serve.cfg:global:separate_user_score|separate_user_score]]</tt>, переменная окружения <tt>EJUDGE_USER_SCORE</tt> устанавливается в значение <tt>1</tt>. В противном случае эта переменная окружения не устанавливается.
Line 18: Line 20:
 
*** 13 - Security violation
 
*** 13 - Security violation
 
** Целое число S (S &gt;= 0) - это балл, который получила тестируемая программа. Это 0, если программа не прошла данный тест, и оценка за данный тест, если программа прошла его.
 
** Целое число S (S &gt;= 0) - это балл, который получила тестируемая программа. Это 0, если программа не прошла данный тест, и оценка за данный тест, если программа прошла его.
** Целое число T (T &gt;= 0) - время работы программа в миллисекундах на данном тесте.
+
** Целое число T (T &gt;= 0) - время работы программы в миллисекундах на данном тесте.
** Если установлена глобальная конфигурационная переменная <tt>[[Serve.cfg:global:separate_user_score|separate_user_score]]</tt>, передается целое число V &mdash; видимость данного теста для пользоватея. Число может принимать следующие значения:
 
*** 0 - (normal) стандартная видимость
 
*** 1 - (full) полная видимость
 
*** 2 - (brief) краткая видимость - пользователь видит вердикт проверки на тесте, но не сам тест
 
*** 3 - (exists) существование - пользователь видит, что тест существует
 
*** 4 - (hidden) скрытость - пользователю недоступна никакая информация
 
  
 
Формат входных данных свободный, то есть числа на входе разделяются произвольным количеством пробельных символов.
 
Формат входных данных свободный, то есть числа на входе разделяются произвольным количеством пробельных символов.
  
Результатом работы оценивающей программы должно быть одно целое число большее нуля на стандартном потоке вывода. Оценка не должна превосходить максимальный балл за задачу.
+
=== Результат работы ===
 +
 
 +
Результатом работы оценивающей программы должно быть одно целое число не меньшее нуля на стандартном потоке вывода. Оценка не должна превосходить максимальный балл за задачу.
  
 
Если у задачи установлена конфигурационная переменная <tt>[[Serve.cfg:problem:valuer_sets_marked|valuer_sets_marked]]</tt>, оценивающая программа должна дополнительно вывести на стандартный поток вывода целое число 0 или 1 &mdash; значение флага "marked" для данной посылки.
 
Если у задачи установлена конфигурационная переменная <tt>[[Serve.cfg:problem:valuer_sets_marked|valuer_sets_marked]]</tt>, оценивающая программа должна дополнительно вывести на стандартный поток вывода целое число 0 или 1 &mdash; значение флага "marked" для данной посылки.
  
 
Если установлена глобальная конфигурационная переменная <tt>[[Serve.cfg:global:separate_user_score|separate_user_score]]</tt>,
 
Если установлена глобальная конфигурационная переменная <tt>[[Serve.cfg:global:separate_user_score|separate_user_score]]</tt>,
оценивающая программа должна дополнительно вывести на стандартный поток вывода два числа: пользовательский вердикт проверки
+
оценивающая программа должна дополнительно вывести на стандартный поток вывода три числа: пользовательский вердикт проверки,
и пользовательскую оценку в баллах. Оценивающая программа может вместо любого из этих чисел вывести -1, тогда будут использованы
+
пользовательскую оценку в баллах и количество пройденных тестов, видимых для пользователя. Оценивающая программа может вместо любого из этих чисел вывести -1, тогда будут использованы
стандартные алгоритмы вычисления пользовательского вердикта проверки и пользовательской оценки в баллах.
+
стандартные алгоритмы вычисления пользовательского вердикта проверки, пользовательской оценки в баллах и количества пройденных тестов.
 +
 
 +
=== Дополнительные файлы ===
  
 
Дополнительно в аргументах командной строки оценивающей программе передаются два пути к файлам. В них оценивающая программа может записать какие-либо коментарии (в произвольной форме), которые будут доступны участникам и судьям.
 
Дополнительно в аргументах командной строки оценивающей программе передаются два пути к файлам. В них оценивающая программа может записать какие-либо коментарии (в произвольной форме), которые будут доступны участникам и судьям.

Revision as of 12:35, 16 March 2011

Навигация: Главная страница/Система ejudge/Использование/Оценивающие программы

Оценивающая программа предназначена для выставления оценки за решение участника при нестандартных системах оценивания. В стандартных системах оценивания KIROV или OLYMPIAD общее число баллов за задачу вычисляется суммированием числа баллов, полученных за все пройденные тесты. Дополнительно ejudge поддерживает выставление специальной оценки про совпадении множеств тестов. Тем не менее в более сложных ситуациях встроенных возможностей системы может не хватить.

Входные данные

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

На вход оценивающей программы подается информация о результатах прохождения тестируемой программы на всех тестах. Оценивающая программа должна на основании этой информации выдать на выходе балл, в который оценивается решение. Входные данные подаются на стандартный поток ввода и имеют следующий формат:

  • Первое число N (N > 0) целое и задает количество тестов, на которых была запущена тестируемая программа.
  • Далее идут N троек чисел R S T.
    • Целое число R - это результат выполнения тестируемой программы на данном тесте.
      • 0 - OK (тест пройден)
      • 2 - Run-time error
      • 3 - Time-limit exceeded
      • 4 - Presentation error
      • 5 - Wrong answer
      • 6 - Check failed (ошибка проверяющей системы)
      • 12 - Memory-limit exceeded
      • 13 - Security violation
    • Целое число S (S >= 0) - это балл, который получила тестируемая программа. Это 0, если программа не прошла данный тест, и оценка за данный тест, если программа прошла его.
    • Целое число T (T >= 0) - время работы программы в миллисекундах на данном тесте.

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

Результат работы

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

Если у задачи установлена конфигурационная переменная valuer_sets_marked, оценивающая программа должна дополнительно вывести на стандартный поток вывода целое число 0 или 1 — значение флага "marked" для данной посылки.

Если установлена глобальная конфигурационная переменная separate_user_score, оценивающая программа должна дополнительно вывести на стандартный поток вывода три числа: пользовательский вердикт проверки, пользовательскую оценку в баллах и количество пройденных тестов, видимых для пользователя. Оценивающая программа может вместо любого из этих чисел вывести -1, тогда будут использованы стандартные алгоритмы вычисления пользовательского вердикта проверки, пользовательской оценки в баллах и количества пройденных тестов.

Дополнительные файлы

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

Первый аргумент командной строки (argv[1]) задает путь к файлу, в который оценивающая программа может записать комментарии для участника. Содержимое этого файла будет доступно как участнику при просмотре им протокола тестирования, так и привилегированным пользователям.

Второй аргумент командной строки (argv[2]) задает путь к файлу, в который оценивающая программа может записать комментации для привелигированных пользователей. Эти комментарии участнику по умолчанию не доступны.

Оценивающая программа может не создавать и ничего не записывать в эти файлы.