Рабочий стол > DL Руководство пользователя > Установка задач с открытыми тестами > Просмотр
Установка задач с открытыми тестами Войти | Зарегистрироваться   Просмотр версии для печати текущей страницы.

Добавлен Гуленко Алексей, отредактирован Гуленко Алексей Jan 12, 2014
Метки: 
(нет)

Вы просматриваете старую версию (v. 8) этой страницы.

Установка задач с открытыми тестами

Пример установки задачи с открытыми тестами
Известные проблемы

Пример установки задачи с открытыми тестами

Пишется чекер, как к стандартной задаче на программирование (см. здесь).
Далее делается файл task.cfg (см. здесь) следующего содержания:

task.cfg
OUTPUT = FILE(tiny.out)
INPUT = FILE(tiny.in)
MEM_LIMIT = 268435456
TYPE = OPENTESTS
OPENTESTS = tiny.o%s
CHECKER = 1
TESTS_BEGIN
20
20
20
20
20
TESTS_END
  • убран COUNT_BY и т.п.
  • установлен TYPE = OPENTESTS
  • задан формат имени выходного файла OPENTESTS ( %s соответствует номеру файла: tiny.o3 )
  • включён чекер: CHECKER = 1

Помещаем его и чекер в папку задачи, делаем архив input.rar со входными файлами (переименованными согласно условию) и помещаем его в подпапку webfiles/ внутри папки с задачей.
Открываем F:/DL/Data/dldata/Tasks/139114.htm (по номеру задачи) и добавляем строчку со ссылкой на файл:

139114.html
...
<p><pre>
<a href="webfiles/input.rar">Загрузить тесты< /a>
< /pre>< /p>< /body>< /html>

Установленная в примере задача находится здесь.

Известные проблемы

  • При наличии в task.cfg опции TIME_LIMIT (и, возможно, COUNT_BY) задача не обрабатывается как задача с открытыми тестами, и пытается компилировать отправляемые архивы)
  • Обнаружено путём отладки задачи 12_IOI_d1t1 - "Pebbling Odometer"
    • Подготовка к тестированию (удаление файла checker.exe, копирование содержимого входной директории) выполняется в tempdir/<time>/, а копирование файла вывода и чекера (и его запуск) - в cache/
      • Как следствие, задачи с несколькими входными файлами (INPUT = DIRECTORY) с открытыми тестами не тестируются
        • Костыль - заархивировать директории (1.in/, 2.in/ и т.д.) в файлы (1.in, 2.in и т.д.), а чекером запускать какой-нибудь unpack.bat (примеры: zip, rar; subtask.cfg - файл, присутствующий в тестах, и его следует каждый раз удалять; запуск: unpack.bat 1.in)
      • Очевидно, в ранее установленных задачах с открытыми тестами всегда был один входной файл, а не директория (и он копировался вместе с пользовательским файлом вывода)
    • Имена файлов в опциях INPUT и OUTPUT в task.cfg полностью игнорируются (файлы копируются без переименования)
    • Разархивация zip (D:\DelTA\Arc\pkunzip <archive>) имеет проблемы в работе - лучше использовать rar (D:\DelTA\Arc\UnRar x <archive>):
      • обрабатываются только архивы, имеющие расширение .zip (если дать ему файл 1.in, архиватор попытается обработать файл 1.in.zip)
      • при распаковке расширения файлов без причины или отражения в логе обрезаются до 3 (трёх) символов (input0.grid -> input0.gri)
  • Чекер запускается Limiter'ом с фиксированными ограничениями по времени и по памяти
    • чекер может не успеть обработать большие тесты (особенно если их нужно распаковывать)
    • чекеры на Java на больших тестах могут вылетать с ACCESS_VIOLATION (предположительно превышение Memory Limit)
Powered by Atlassian Confluence, the Enterprise Wiki. (Version: http://www.atlassian.com/software/confluence Build:#2.6.1 916) - Ошибка/новая особенность - Свяжитесь с Администраторами