Зануда
06.05.2004 19:54
Вот тут у меня возникли интересные мысли по поводу тестирующей системы "Made in USU", которая вроде бы от Клепинина. Этими мыслями я поделился с Сандро, и тот посоветовал мне опубликовать их здесь.
Дело вот в чём. На "стандартных" (не-спортивных, не-командных) российских олимпиадах по программированию стало традицией выдавать участникам после олимпиады дискетки с архивом - все решения всех участников, тесты жюри, проверяющая система и т.д., чтобы сомневающиеся могли провести у себя дома перепроверку всех решений и убедиться в объективности жюри. Тестирующую программу совершенствуют каждый год вплоть до радикального переписывания не только из-за необходимости добавления новых фишек, но и из-за (по слухам) прецедентов "работы на дому" уже участвовавших в олимпиаде с этой системой. Т.е. "продвинутые" программеры раскапывают адрес переменной, где хранится результат теста "пройден - не пройден", и в своей программе записывают по этому адресу единичку. Отловить такие случаи в общем возможно, но гораздо тяжелее, чем, скажем, попытки отформатировать диск :-) и по-моему, к этому никто и не стремится, ведь гораздо проще обеспечить уникальность адреса в каждой новой версии системы.
Впрочем, на российских олимпиадах, где крутятся Большие Деньги, говорят, мухлёж ещё тот идёт, чуть ли даже системный таймер не перепрограммируют, чтоб медленнее тикал :-)
Это всё вводные речи, а суть вот в чём. Наша тестирующая система не меняется годами, а ведь есть люди, участвующие в одних соревнованиях как участники и в других - как жюри (не будем показывать пальцами), и у этих людей есть доступ не только к бинарникам, но и к исходникам тестирующей системы. Что им, абстрактно говоря, мешает вставить в сдаваемую задачу аналогичный трюк - установку флага "тест пройден" в тестирующей системе?
Дело вот в чём. На "стандартных" (не-спортивных, не-командных) российских олимпиадах по программированию стало традицией выдавать участникам после олимпиады дискетки с архивом - все решения всех участников, тесты жюри, проверяющая система и т.д., чтобы сомневающиеся могли провести у себя дома перепроверку всех решений и убедиться в объективности жюри. Тестирующую программу совершенствуют каждый год вплоть до радикального переписывания не только из-за необходимости добавления новых фишек, но и из-за (по слухам) прецедентов "работы на дому" уже участвовавших в олимпиаде с этой системой. Т.е. "продвинутые" программеры раскапывают адрес переменной, где хранится результат теста "пройден - не пройден", и в своей программе записывают по этому адресу единичку. Отловить такие случаи в общем возможно, но гораздо тяжелее, чем, скажем, попытки отформатировать диск :-) и по-моему, к этому никто и не стремится, ведь гораздо проще обеспечить уникальность адреса в каждой новой версии системы.
Впрочем, на российских олимпиадах, где крутятся Большие Деньги, говорят, мухлёж ещё тот идёт, чуть ли даже системный таймер не перепрограммируют, чтоб медленнее тикал :-)
Это всё вводные речи, а суть вот в чём. Наша тестирующая система не меняется годами, а ведь есть люди, участвующие в одних соревнованиях как участники и в других - как жюри (не будем показывать пальцами), и у этих людей есть доступ не только к бинарникам, но и к исходникам тестирующей системы. Что им, абстрактно говоря, мешает вставить в сдаваемую задачу аналогичный трюк - установку флага "тест пройден" в тестирующей системе?