| 02.11.2011 12:00 | |
Всем доброго времени суток. В этой статье я хотел бы предложить вам инструмент для проверки решений к Acceler8 2011 contest.
Checking 4 tests.
Test #1: Ok!
Test #2: Ok!
Test #3: Ok!
Test #4: Ok!
Тестировщик проверяет следущие случаи:
Checking 4 tests.
Test #1: Ok!
Test #2: ERROR: Sum in checking file mismatch: 18 instead of 6
Test #3: Ok!
Test #4: ERROR: Sum in checking file mismatch: 8192 instead of 16384
(В данном случае сумма в указной нами матрице не совпадайет с указанной нами суммой)
Если есть ошибка во входном или правильном выходном файле выводится сообщение без ERROR: и решение не проверяется на этом тесте:
Checking 4 tests.
Test #1: Wrong correct format
Test #2: Ok!
Test #3: Sum in correct file mismatch: 16384 instead of 16016
Test #4: Input data should be in [0; 20000]
Также можно проверить все решения на наборе тестов. Для этого есть скрипт ./full_check.sh. Скрипт принимает 1 обязательный параметр - строка для запуска решения и 1 необязательный пареметр - директория с тестами, если он не не указан, то используется директория tests/. Скрипт расчитан на то, что ваша программа принимает 1м параметром путь к входному файлу и 2м параметром путь к выходному файлу. Пример использования:
Как показывает практика, сверять результаты решения вручную - довольно тяжелая работа по многим причинам: легко можно недоглядеть ошибку в одном из тестов, также на один тестовый набор может быть несколько решений с одинаковыми суммами. По-этому я решил потратить немного времени и написать тестировщик решений по заданным тестам. Найти исходники к нему можно на github и оттуда же можно скачать zip-архив тестировщика. Программа выполненна на C++ и Bash и расчитана на работу под Linux, но часть, выполненная на C++, также должна работать и под windows. В дальнейшем я опишу действия с ней используя Linux.
Как установить
Для установки вам в первую очередь необходимо скачать zip-архив, распаковать, перейти в директорию:
wget https://github.com/xonatius/acceler8-checker/zipball/master -O acceler8-checker.zip unzip acceler8-checker.zip cd xonatius-acceler8-checker-*И далее собрать исходники из папки src/ командой build.sh:
./build.shДолжен появится файл checker
Использование
Для единичной проверки ответов можно использовать команду ./checker, в качестве параметров ему необходимо указать путь к входному файлу теста, путь к правильному выходному файлу теста, путь к проверяемому выходному файлу. К примеру:
./checker tests/small.input tests/small.output output.txtПрограмма выведет лог проверки решения. К примеру:
Checking 4 tests.
Test #1: Ok!
Test #2: Ok!
Test #3: Ok!
Test #4: Ok!
Тестировщик проверяет следущие случаи:
- Неправильный формат вывода
- Вашу сумму с суммой в указанной подматрице
- Вашу сумму с суммой из правильного решения теста
- Вашу площадь с площадью вычисленной из указанной вами подматрици
Checking 4 tests.
Test #1: Ok!
Test #2: ERROR: Sum in checking file mismatch: 18 instead of 6
Test #3: Ok!
Test #4: ERROR: Sum in checking file mismatch: 8192 instead of 16384
(В данном случае сумма в указной нами матрице не совпадайет с указанной нами суммой)
Если есть ошибка во входном или правильном выходном файле выводится сообщение без ERROR: и решение не проверяется на этом тесте:
Checking 4 tests.
Test #1: Wrong correct format
Test #2: Ok!
Test #3: Sum in correct file mismatch: 16384 instead of 16016
Test #4: Input data should be in [0; 20000]
./full_checker.sh ../solution/mainПри использовании своих тестов необходимо, чтобы в директории с тестами были файлы вида *.input и *.output - входной и проверочный файлы. Использовать набор тестов из другой директории можно следующим образом:
./full_check.sh ./main ../my_testsПроверка решения на наборе тестов также выведет время выполнения вашей программы.
Надеюсь, что смог кому-то помочь.
P.S.: Мог где-то допустить ошибки или не учесть что-либо. Если что - пишите об этом или отправляйте патчи на github.
Пожалуйста, обратитесь к странице Уведомление об оптимизации для более подробной информации относительно производительности и оптимизации в программных продуктах компании Intel.
Комментарии (0) 
Обратная ссылка (0)
Оставить комментарий 
Для получения технической помощи посетите сайт службы поддержки.
Автор
Daniil Bondarev
| ||
azilli
|


