Что такое daysper

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

Реклама daysper[править | править код]

Режиссер: Я не понял, а это зачем все надо?
Пом.реж.: О! Эта система имеет множество преимуществ перед старой организацией процесса.

Daysper — это кроссплатформенная замена t.cmd. Точнее, даже весьма продвинутая замена.

Если вы готовите задачи для олимпиад по программированию, вам обычно надо автоматизировать множество действий: как минимум, генерацию тестов, ответов на них и проверку собственных решений. Для этого вы можете каждый раз писать батнички, можете использовать какую-нибудь систему поддержки задач типа t.cmd, t.sh, Полигон и т.п. Daysper — еще одна подобная система, обладающая рядом особенностей:

  1. Кроссплатформенность. Daysper (написанный на C++) можно скомпилировать под Windows, можно под Linux, работать он будет одинаково. С задачей, подготовленной под daysper, можно работать под обеими системами ничего не переделывая (конечно, в пределах переносимости генераторов тестов, решений и т.п.).
  2. Трансляция в скрипты. Любые действия с файлами daysper выполняет так: сначала создается скрипт (cmd или sh, в зависимости от ОС) для выполнения необходимых действий, потом это скрипт запускается. Скрипт уже не требует наличия daysper'а.
  3. Экспортирование задач. Как следствие предыдущего пункта, daysper может создать в задаче скрипты генерации (и очистки), после чего тесты можно будет генерировать без daysper. Благодаря этому вы можете дать задачу кому-нибудь, у кого нет daysper'а, и он сможет хоть как-то с ней работать (см. команду daysper export).
  4. Ручные answer-файлы. Answer-файлы к тестам могут создаваться как с помощью эталонных решений, так и "вручную" (например, к ручным тестам могут быть предусмотрены ручные ответы); последние не будут зависеть от эталонного решения вообще.
  5. Поддержка валидаторов. К каждой задаче может быть написан валидатор, который будет автоматически использован для проверки корректности тестов.
  6. Специальный язык для генерации тестов. Скрипт генерации тестов пишется на простом специальном языке и не требует указания стандартных действий типа указания конкретной строки для компиляции, написания кода для валидации тестов и генерации ответов.
  7. Абстрагирование от номеров тестов. В скрипте генерации нигде не указываются конкретные имена файлов с тестами и answer-файлами (а используются шаблоны имен). Благодаря этому изменить систему наименования тестов (например, с 01/01.a на input.001/answer.001) можно очень легко.
  8. Тестсеты. По каждой задаче может быть подготовлено несколько наборов тестов (тестсетов), которые при генерации можно конкатенировать в любом порядке. Благодаря этому, например, тесты их условия можно выделить в отдельный тестсет и далее либо использовать их, либо нет.
  9. Работа в отдельном каталоге. Все действия (генерацию тестов, проверку решений и т.д.) daysper выполняет в подкаталоге work каталога задачи, предварительно скопировав туда все необходимые файлы. Благодаря этому уменьшается риск затереть или случайно удалить генераторы тестов, ручные тесты и т.д.
  10. Работа с условиями. Daysper умеет автоматически подготавливать к компиляции и компилировать TeX-условия задач. См. TeX в daysper и команды daysper statement и daysper contest statements.
  11. Автоматическая генерация примеров в условиях задач. Вы можете создать специальный тестсет st, тесты которого daysper может автоматически вставить в условия как пример тестов.
  12. Контесты. Daysper поддерживает создание контестов, т.е. вы можете указать список задач контеста — и daysper сам сформирует TeX-условия контеста, скомпилирует их, а также подготовит тесты для заливки в тестирующую систему (сейчас поддерживается только ejudge).
  13. Каталог задачи — обычный каталог. Все файлы, относящиеся к задаче, храняться в отдельном каталоге задачи; для работы с задачей вы можете использовать любые программы (например, можете поместить ее под svn или использовать какие-нибудь внешние программы для обработки сразу нескольких задач).
  14. daysper легко устанавливается. На самом деле вам надо лишь скопировать исполняемый файл daysper и при необходимости создать или отредактировать файл daysper.ini.
  15. Настраиваемость. Можно легко изменить строки компиляции для разных языков, формат названий input- и answer-файлов и т.д., для этого не надо копаться в исходниках daysper.

Планы на будущее[править | править код]

В ближайших планах:

  1. Поддержка run в каком-нибудь виде
  2. Поддержка трансляции в makefile.