Идентификаторы задачи
Хочется поддерживать систему идентификаторов задач, чтобы, найдя две версии одной задачи, можно было понять, чем они различаются. Видимо, необходимы отдельно идентификаторы для тестов и условий.
В каждой задаче должны существовать два файла, отражающие историю условий и тестов к этой задаче. История условий должена лежать в файле 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 Изначальная версия