Прежде всего, чтобы можно было инициализировать задачу нужно прописать путь в init.sh до папки, где у вас будут храниться контесты.
#! /bin/bash
MY_DIRECTORY=~/Documents/HW/course_2/caos/ # your directory
...
Далее, чтобы создать папку с контестом и задачу нужно запустить скрипт:
bash init.sh <contest_name> <problem_name>
После чего в выбранной директории появится (если еще не была) папка <contest_name>, в которой будет prob_<problem_name>. Обратите внимание, что если повторно запустить скрипт, то содержимое prob_<problem_name> будет перезаписано.
Находясь в папке с задачей можно изменять тесты с помощью скрипта edit_test.sh.
Чтобы создать тест (или перезаписать уже существующией) достаточно написать команду:
bash edit_test.sh add <test_name>
После чего откроется vim, в котором будет предложено записать input, а затем, после выхода из первого vim, откроется второй — с output.
Чтобы изменить тест нужна команда:
bash edit_test.sh edit <test_name>
Которая откроет vim, в котором будет предложено изменить input, а затем, после выхода из первого vim, откроется второй — с output.
Для удаление можно воспользоваться следующей командой:
bash edit_test.sh remove <test_name>
Тесты храняться в папке tests, где <test_name>.dat и <test_name>.ans — входные и выходные данные теста <test_name> соответсвенно.
Для запуска программы нужно иметь скомпилированный main и прописать следующую комадну:
bash run.sh
или
make runtests
После чего будут вердикты (WA или RE) для всех тестов. Обратите внимание, что TL данный скрипт отловить не может. WA означает, что какой-то символ ответа не совпал с символом вывода решения.
Есть несколько видов запуска run.sh:
bash run.sh
будет тестировать на всех тестах.bash run.sh 1
будет тестировать до первого непройденного теста.bash run.sh 2
будет тестировать на всех теста, но при этом показывать сам тест и в случае неправильного ответа отображать вывод программы.bash run.sh 3
будет тестировать на всех теста, но при этом не будет сравнивать ответ и вывод программы, оставляя лишь вердикты ?? и RE.
Пример работы run.sh
: