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

в сравнении с
Текущий из Вадим Копиченко
за Jan 22, 2019 21:48.

 
Ключ
Эти линии были удалены. Это слово было удалено.
Эти линии были добавлены. Это слово было добавлено.

Просмотр истории страницы


Есть 3 изменений. Просмотреть первое изменение .

 h1. Установка задач с открытыми тестами
  
 [Пример установки задачи с открытыми тестами|#sample]
 [Известные проблемы|#problems]
  
 h2. {anchor:sample}Пример установки задачи с открытыми тестами
  
 Пишется чекер, как к стандартной задаче на программирование (см. [здесь|http://dl.gsu.by/doc/use/programmers_task.htm]).
 Далее делается файл *task.cfg* (см. [здесь|http://dl.gsu.by/doc/use/taskcfg.htm]) следующего содержания:
 {noformat:title=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
 {noformat}
 * убран +COUNT_BY+ и т.п.
 * установлен +TYPE = OPENTESTS+
 * задан формат имени выходного файла +OPENTESTS+ ( +%s+ соответствует номеру файла: +tiny.o3+ )
 * включён чекер: +CHECKER = 1+
  
 Помещаем его и чекер в папку задачи, делаем архив input.rar со входными файлами (переименованными согласно условию) и помещаем его в подпапку +webfiles/+ внутри папки с задачей.
 Открываем +F:/DL/Data/dldata/Tasks/139114.htm+ (по номеру задачи) и добавляем строчку со ссылкой на файл:
  Открываем +dldata/Tasks/139114.htm+ (по номеру задачи) и добавляем строчку со ссылкой на файл:
 {code:title=139114.html}
 ...
 <p><pre>
 <a href="webfiles/input.rar">Загрузить тесты< /a>
 < /pre>< /p>< /body>< /html>
 {code}
 Установленная в примере задача находится [здесь|http://dl.gsu.by/task.jsp?nid=1040077&cid=168].
  
 h2. {anchor:problems}Известные проблемы
  
* При наличии в {{task.cfg}} опции +TIME_LIMIT+ (и, возможно, +COUNT_BY+) задача не обрабатывается как задача с открытыми тестами, и пытается компилировать отправляемые архивы)
 * При наличии опечатки в {{task.cfg}} тестирование может зависнуть
 * Обнаружено путём отладки задачи [12_IOI_d1t1 - "Pebbling Odometer"|http://dl.gsu.by/task.jsp?nid=1121896&cid=168]
 *- Подготовка к тестированию (удаление файла checker.exe, копирование содержимого входной директории) выполняется в {{tempdir/<time>/}}, а копирование файла вывода и чекера (и его запуск) - в {{cache/}}
 *-- Как следствие, задачи с несколькими входными файлами (+INPUT = DIRECTORY+) с открытыми тестами не тестируются
 *--- Костыль - заархивировать директории ({{1.in/}}, {{2.in/}} и т.д.) в файлы ({{1.in}}, {{2.in}} и т.д.), а чекером запускать какой-нибудь unpack.bat (примеры: [zip|http://dl.gsu.by/images/agulenko/unpack_zip.bat], [rar|http://dl.gsu.by/images/agulenko/unpack_rar.bat]; subtask.cfg - файл, присутствующий в тестах, и его следует каждый раз удалять; запуск: {{unpack.bat 1.in}})
 *-- Очевидно, в ранее установленных задачах с открытыми тестами всегда был один входной файл, а не директория (и он копировался вместе с пользовательским файлом вывода)
 *- Имена файлов в опциях +INPUT+ и +OUTPUT+ в {{task.cfg}} полностью игнорируются (файлы копируются без переименования)
 *- Разархивация {{zip}} ({{D:\DelTA\Arc\pkunzip <archive>}}) имеет проблемы в работе - лучше использовать {{rar}} ({{D:\DelTA\Arc\UnRar x <archive>}}):
  *- Для разархивации вместо устарелых архиваторов из ({{DelTA\Arc}}) лучше использовать ({{DelTA\ext\unpack.cmd}}) со свежим {{7z.exe}}, который поддерживает все форматы (zip 1 и 2, rar 4 и 5).
 *-- обрабатываются только архивы, имеющие расширение {{.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) - Ошибка/новая особенность - Свяжитесь с Администраторами