И Автоматизация использования эталонных решений олимпиадных задач по программированию.

advertisement
Научно-методический журнал «ПРОф»
№ 001 - 2010
Автоматизация использования эталонных решений
олимпиадных задач по программированию.
Д.А. Слинкин
Би
бл
ио
те
ка
Ш
ГП
И
В настоящее время стандартизованной формой представления решения олимпиадной
задачи по программированию является программа, обрабатывающая текстовые исходные
данные, поступающие на стандартный поток ввода и предоставляющая текстовый результат
решения через стандартный поток вывода. Такая стандартизация позволяет упростить,
ускорить и в идеале - автоматизировать проверку олимпиадной задачи с помощью прогона
программы через набор эталонных тестов и анализа результатов. К сожалению, не всегда
формулировка олимпиадной задачи подразумевает однозначность решения, а при
автоматизированной проверке причиной такой неоднозначности может служить даже
лишний «белый шум» на входе или выходе программы, не имеющий отношения к
собственно правильности решения. Примером могут служить требования к виду и
количеству разделителей, точности вещественных значений, кодировке и регистру символов,
форме логических значений и т. д. Несоблюдение участником олимпиады любого из
требований ведет к отверганию решения автоматизированной системой проверки, вне
зависимости от фактической корректности решения. Система проверки не способна
определить, в чем заключается ошибка, она просто констатирует несовпадение результата
решения задачи с эталонным. Таким образом, участник олимпиады, решивший сложную
задачу, но допустивший ошибки в оформлении (что повсеместно наблюдается среди
малоопытных участников олимпиад), ставится в один ряд со студентами, вообще не
решившими задачу или решившими ее неверно. К сожалению, невозможно найти выход из
данной ситуации на уровне автоматизированной системы проверки решений олимпиадных
задач, т. к. совершенно нереально заложить в систему все варианты ошибок оформления.
Пожалуй, единственным решением указанной проблемы, на мой взгляд, является
внедрение в практику проведения олимпиад эталонных решений. Эталонным решением
олимпиадной задачи по программированию назовем программу, предоставленную участнику
олимпиады в бинарном или другом, недоступном для изучения исходного кода виде,
обеспечивающую корректное решение исходной задачи. Участник олимпиады
самостоятельно формирует тестовые данные для такой программы и анализирует
полученные результаты. Таким образом, любые ошибки в формировании исходных данных
будут диагностироваться эталонным решением, а ошибки в результирующих данных
участник олимпиады определит самостоятельно, обнаружив несовпадение результатов
работы собственного и эталонного решений.
В предлагаемом подходе, наряду с несомненными положительными моментами,
имеется несколько сложностей.
Во первых, каждая олимпиадная задача должна быть в обязательном порядке корректно
решена и реализована на одном из языков программирования. Решение действительно
должно быть эталонным, корректно обрабатывать граничные условия, функционировать на
произвольном наборе данных, решать задачу за минимальное время с минимальным
потреблением ресурсов. В таком решении недопустимы необработанные исключительные
ситуации, семантические ошибки и другие несоответствия условию задачи. Опыт
применения эталонных решений показывает, что расхождения между формулировкой задачи
и эталонным решением вызывает крайне негативную реакцию участника олимпиады, так как
ставит его в ситуацию неопределенности, что в условиях жестких временных рамок
олимпиады является недопустимым. Как ни странно, столь жесткие требования к разработке
эталонного решения приводят, при их выполнении, к некоторым положительным эффектам,
а именно: к более четкой формулировке задачи и упрощению формата исходных и
результирующих данных.
Научно-методический журнал «ПРОф»
№ 001 - 2010
Би
бл
ио
те
ка
Ш
ГП
И
Во вторых, предоставление участнику олимпиады эталонного решения подразумевает
невозможность исследования исходного кода решения, что, в свою очередь, ограничивает
применение скриптовых языков. Решение данной проблемы видится в разработке клиентсерверной веб-ориентированной службы, которая позволяет удаленно запускать эталонные
решения на исполнение, с передачей им тестовых данных, с последующим получением и
анализом результатов.
В 2007 году в в Шадринском государственном педагогическом институте для
автоматизации
использования
эталонных
решений
олимпиадных
задач
по
программированию была разработана веб-ориентированная система Solver. В течении трех
лет данная система применяется в качестве вспомогательного средства проведения
олимпиад, развивается и совершенствуется. Система обеспечивает получение исходных
данных от клиента, обработку их с помощью авторского эталонного решения и возврат
результата обработки клиенту. Эталонные решения могут быть реализованы на любом языке
программирования, в бинарной или скриптовой форме в виде внешних файлов.
Дополнительно, решение может быть непосредственно встроено в систему в виде php-класса
с перекрытием нескольких свойств и методов. Базовым требованием к внешним эталонным
решениям является использование исключительно стандартных потоков ввода-вывода для
организации приема-передачи данных. Встроенные эталонные решения реализуются
наследованием одного из классов системы Solver, перекрытием единственного метода и
описанием информационной составляющей задачи в нескольких полях нового класса.
В 2010 году мы планируем публикацию исходных текстов системы Solver в виде
репозитария git с доступом через веб-портал ШГПИ shgpi.edu.ru. Дополнительно, мы
готовим развертывание экземпляра системы Solver, включающего в себя подборку наиболее
интересных задач с олимпиад ШГПИ 2007-2009 годов.
Download