Идентификаторы задачи

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

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

В каждой задаче должны существовать два файла, отражающие историю условий и тестов к этой задаче. История условий должена лежать в файле desc\stid.txt и определяться каталогом statement, история тестов должна лежать в файле desc\testid.txt и определяться каталогом tests. Приципы формирования обеих историй идентичны.

Формат файла истории[править | править код]

Файл истории должен иметь одну или более записей, каждая занимает одну строку.

Каждая запись состоит из трех частей, разделенных пробелами:

  • Идентификатора задачи
  • Хэша соответствующего каталога (необязательный, но настоятельно рекомендуемый параметр)
  • Комментария в произвольной форме.

Дополнения должны вноситься в начало файла. Они должны вноситься тогда и только тогда, когда при подготовке к очередному контесту соответствующий каталог изменяется. В частности:

  • Если тесты к задаче берутся без изменений, то файл с историей тестов меняться не должен.
  • Аналогично про условия.
  • В частности, если ни тесты, ни условия не менялись, то никакие файлы истории не должны меняться. Даже если добавились новые решения и т.п.
  • Если же изменились как и тесты, так и условия, то надо добавить строки и туда, и туда (при этом добавляемые идентификаторы задачи будут идентичными).

Идентификаторы задач[править | править код]

Каждой задаче на каждом контесте присваивается идентификатор, выбранный таким образом, чтобы он был абсолютно уникальным и однозначно идентифицировал эту задачу среди всех задач, использующих систему идентификаторов.

Примеры:

ru.sis.2009.august.C.day05.a
ru.sis.2009.august.A'.flow    //Строка 'flow' уникально идентифицирует задачу в пределах этой параллели
ru.nnov.nnoi.2010.2

Конкретные правила формирования идентификаторов: TODO.

Хеширование каталога[править | править код]

TODO. Есть ли какие-нибудь общепринятые алгоритмы хеширования каталогов?

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

Пример[править | править код]

(Все примеры вымышлены)

stid.txt

ru.sis.2009.august.A'.king 85dea75647f Переделано с принца/невест на принцессу/женихов
ru.sis.2007.august.B.king 1aacb35876 Добавлен пример
ru.neerc.2002.K 928ae86d56c Изначальная версия

testid.txt

ru.sis.2010.august.A'.king 27dd562a34 Тесты из условия выделены в отдельный тестсет
ru.sis.2008.august.B.king af4298562ed5c Добавлены тесты из условия
ru.neerc.2002.K 285a37ef634 Изначальная версия