Каталог задачи daysper

Последняя правка 3792 дня назад
Материал из Daysper manual
Перейти к навигации Перейти к поиску

Что считается каталогом с задачей[править | править код]

Нередко daysper'у надо определять, является ли определенный каталог "каталогом с задачей", т.е. верно ли, что он содержит материалы некоторой задачи (т.е. надо ли при рекурсивной генерации тестов генерировать тесты в этой задаче и т.п.).

Критерий определения следующий: каталог считается каталогом с задачей тогда и только тогда, когда в нем есть подкаталог с исходниками тестов, т.е. подкаталог с названием, определяемым параметром source-directory файла daysper.ini (по умолчанию — tests).

Случай, когда в некотором каталоге есть файл daysper.ini, устанавливающий определенное значение параметра source-directory, и в этом же каталоге есть подкаталог с названием, совпадающим с этим значением, обрабатывается корректно, т.е. этот каталог считается каталогом с задачей. Аналогично, если файл daysper.ini в некотором каталоге изменяет значение параметра source-directory на название, не совпадающее ни с одним подкаталогом этого каталога, то этот каталог не считается каталогом с задачей.

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

Примеры:

  • если все настройки daysper по умолчанию, то каталогом с задачей считается любой каталог, в котором есть подкаталог tests.
  • если в (действующем в данном каталоге, см. область действия файлов daysper.ini) файле daysper.ini указано source-directory=src, то каталогом с задачей будет считаться любой каталог, в котором есть подкаталог src.
  • если в каталоге есть подкаталог foo и файл daysper.ini, в котором указано source-directory=foo, то этот каталог тоже будет считаться каталогом с задачей.
  • если в каталоге нет подкаталога foo и есть файл daysper.ini, в котором указано source-directory=foo, то этот каталог не будет считаться каталогом с задачей.

Структура каталога с задачей[править | править код]

Daysper использует следующую структуру каталога с задачей:

  • statement\ — каталог, в котором должен находиться TeX-файл с условием задачи, а также все требуемые ему файлы. Файл с условием задачи должен называться id.tex, где id — идентификатор задачи.
  • statement-ready\ (каталог не требуется, а создается daysper'ом) — каталог, куда daysper положит скомпилированные .ps и .pdf-условия.
  • tests\ (название каталога настраивается в daysper.ini) — каталог с исходниками тестов: ручные тесты, генераторы, скрипты генерации и т.д. Именно этот подкаталог (как описано выше) и является критерием того, что текущий каталог является каталогом с задачей.
  • work\ (каталог не требуется, а создается daysper'ом) — каталог, в котором daysper запускает все скрипты.
  • tests-ready\ (название каталога настраивается в daysper.ini; каталог не требуется, а создается daysper'ом) — каталог, куда daysper кладет сгенерированные тесты.

В каталоге с задачей также должны находиться следующие файлы:

  • Решения жюри, см. ниже.
  • Чекер. Должен называться check.*.
  • Валидатор. Должен называться validate.*.
  • При необходимости, тут может находиться файл daysper.ini. Его настройки (в соответствии с областью действия файлов daysper.ini) будут распространяться на эту задачу.
  • Прочие файлы, необходимые программам (testlib и т.п.)

Формат названий решений жюри[править | править код]

Различные команды daysper'а требуют указания не полного названия решения, а только идентификатора. Решение с идентификатором solid у задачи с идентификатором problemid daysper ищет в файлах:

  • solid.*
  • problemid_solid.*
  • solution_solid.*
Более строго: для каждого указанного в daysper.ini расширения (суффикса) языка программирования daysper подставляет его вместо .* в шаблонах выше и ищет соответствующий файл. В случае, если находится несколько файлов, поведение daysper не определено.

Пример структуры каталога[править | править код]

Пример структуры каталога (до запуска всех команд daysper, т.е. здесь не указаны файлы, создаваемые daysper, а присутствуют только те файлы, которые надо создать вручную):

  • statement\
    • aplusb.tex
  • tests\
    • 01.a.hand
    • 01.hand
    • 02.a.hand
    • 02.hand
    • 03.a.hand
    • 03.hand
    • do_all.d
    • do_st.d
    • gen.dpr
    • st01.hand
    • st01.hand.a
    • st02.hand
    • st02.hand.a
  • aplusb_c.cpp
  • aplusb_h.php
  • aplusb_j.java
  • aplusb_pk.pas
  • aplusb_pkwrong.pas
  • check.dpr
  • daysper.ini
  • testlib.pas
  • validate.pas

Этот каталог со содержимым всех файлов можно получить следующей командой:

svn co https://burunduk3.geins.ru/svn/public/daysper/test-problems/aplusb