Feat problem dir for variants #418
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Как протестировать
Изменения
Если указана переменная variant_num и её значение больше 1, то проводится проверка.
Если указан ровно один problem_dir или его нет вообще, то пути для вариантов формируются по старой логике с суффиксами -1, -2 и т.д.
А если указана больше одного, то их число должно быть равно variant_num. И в этом случае для соответствующего варианта будет использоваться соответствующий problem_dir.
Пример конфига:
Для задач без вариантов никаких изменений.
Все остальные конфиги (чекер и т.п.) у всех вариантов должны совпадать.
Страница документации:
https://ejudge.ru/wiki/index.php/Serve.cfg:problem:problem_dir
Новая версия документации:
—-
Данная конфигурационная переменная позволяет указать произвольное расположение каталога задачи, в которой находятся тесты, условия, проверяющие программы и т. п. Конфигурационная переменная действует только в режиме альтернативной раскладки файлов.
Если данная конфигурационная переменная не установлена, то по умолчанию каталог задачи размещается в подкаталоге problems. Название каталога задачи задается конфигурационными переменными short_name или internal_name.
Если данная конфигурационная переменная конкретной задачи содержит путь, не начинающийся с символа '/' или '.', то он отсчитывается относительно каталога problems. Например,
в этом случае задача находится в problems/./other_name в каталоге турнира.
Если значение переменной равно:
в этом случае задача находится в каталоге problems/A каталога турнира 10, то есть используются тесты, проверяющие программы и пр. из другого турнира.
Если переменная содержит абсолютный путь, он сохраняется без изменений.
здесь задача находится в каталоге
/home/judges/git-repo/2016/A.Если конфигурационная переменная конкретной задачи не начинается с символов '/' или '.', а конфигурационная переменная problem_dir абстрактной задачи начинается с символа '/', полный путь к каталогу задачи получается конкатенацией значения конфигурационной переменной абстрактной и конкретной задач.
Например,
В этом случае путь к каталогу задачи
Aбудет равен/home/judges/git-repo/2016/A.Поддерживается начиная с версии 3.5.2
Если у задачи установлен параметр variant_num — количество вариантов, и число вариантов больше 1, то параметр задачи
problem_dirможет быть указанvariant_numраз: в этом случае для определения пути к директории задачи вместо суффиксов-1,-2и т.д. будут использоваться пути из параметровproblem_dir. Пример конфигурации:Поддерживается начиная с версии [3.13.1]