В одном из обсуждений зашла речь про использование на соревнованиях prewritten code (части кода, которые были написаны до начала соревнования и копируются в код решения). К сожалению, имеют место и другие вещи, которые справедливо можно назвать читерством и надо порицать. Не знаю, будет ли в правилах Codeforces что-либо сказано на этот счет, но по-моему это стоит обсудить.
На разных соревнованиях к использованию prewritten code относятся по-разному. В соревнованиях ACM ICPC это, естественно, запрещено. Однако замечу, что ACM ICPC состоит из онсайт-соревнований, поэтому проконтролировать соблюдение этого правила элементарно. Проблема с применением этого правила возникает на онлайн-соревнованиях. На наиболее известных соревнованиях (TopCoder и GCJ) к этому подходят просто: использование prewritten code разрешено. Есть, к примеру, соревнования snarknews, проводимые при поддержке журнала Мир ПК (pcworld.snarknews.info ). На них использование prewritten code строжайшим образом запрещено. Я совершенно уверен, что огромное количество участников этих соревнований в той или иной степени нарушает это правило, однако случаи, когда кто-либо за это наказывался, единичны. В одной из таких ситуаций человек отправил солидное по размеру решение через пару минут после начала соревнования, т.е. только полнейшая очевидность нарушения стала причиной дисквалификации. Олег Христенко, помнится, тогда на сайте писал, что, мол, поскольку заявки на мировой рекорд по скорости набора кода подано не было, то человек использовал prewritten code.
На соревнованиях snarknews характерно применение еще одного "запрещенного приема". Дело в том, что задачи для этих соревнований зачастую не оригинальные, а целиком берутся с уже прошедших зарубежных соревнований. Соответственно, при наличии навыков поиска в интернете можно найти и тесты, и авторские решения. Удивительно, но находились люди, которые просто отсылали авторские решения. Опять же в силу очевидности нарушения их постигало наказание. Но к использованию тестов к задаче и авторских решений можно подходить и с большей осторожностью...
Но это все мелочи. Эти нарушения "закладываются" в не самой удачной, на мой взляд, концепции конкретных соревнований. Для того, чтобы таких нарушений не было, достаточно 1) разрешить использование prewritten code и 2) готовить для соревнований оригигальные задачи.
А теперь о более серьезной вещи, которая может случиться на любых онлайн-соревнованиях. Речь об обмене кодом между участниками. Это самое серьезное нарушение, пункт о котором есть в правилах практически каждого соревнования. За это грозят пожизненной дисквалификацией и прочими карами. И хочется верить организаторам, что они действительно способны покарать читеров. Но насчет этого есть сомнения. И корень этих сомнений в том, что совершенно непонятно, как это проконтролировать. Кому-то может показаться, что это совсем просто: надо глазом (или программно) сравнить решения и сделать вывод, имела ли место передача кода. Не работает. Расскажу один случай. Дело в том, что меня хотели дисквалифицировать с Google Code Jam 2009 по подозрению в таком читерстве. Об этом можно почитать здесь . Обошлось:))
Тогда я в первый раз задумался, а как же просто, грамотно и эффективно бороться с подобными нарушениями правил? Какие у вас есть идеи? Какие еще разновидности читерства на онлайн-соревнованиях вы знаете? Сталкивались ли вы когда-нибудь с такими случаями? Были ли виновные наказаны?
На разных соревнованиях к использованию prewritten code относятся по-разному. В соревнованиях ACM ICPC это, естественно, запрещено. Однако замечу, что ACM ICPC состоит из онсайт-соревнований, поэтому проконтролировать соблюдение этого правила элементарно. Проблема с применением этого правила возникает на онлайн-соревнованиях. На наиболее известных соревнованиях (TopCoder и GCJ) к этому подходят просто: использование prewritten code разрешено. Есть, к примеру, соревнования snarknews, проводимые при поддержке журнала Мир ПК (pcworld.snarknews.info ). На них использование prewritten code строжайшим образом запрещено. Я совершенно уверен, что огромное количество участников этих соревнований в той или иной степени нарушает это правило, однако случаи, когда кто-либо за это наказывался, единичны. В одной из таких ситуаций человек отправил солидное по размеру решение через пару минут после начала соревнования, т.е. только полнейшая очевидность нарушения стала причиной дисквалификации. Олег Христенко, помнится, тогда на сайте писал, что, мол, поскольку заявки на мировой рекорд по скорости набора кода подано не было, то человек использовал prewritten code.
На соревнованиях snarknews характерно применение еще одного "запрещенного приема". Дело в том, что задачи для этих соревнований зачастую не оригинальные, а целиком берутся с уже прошедших зарубежных соревнований. Соответственно, при наличии навыков поиска в интернете можно найти и тесты, и авторские решения. Удивительно, но находились люди, которые просто отсылали авторские решения. Опять же в силу очевидности нарушения их постигало наказание. Но к использованию тестов к задаче и авторских решений можно подходить и с большей осторожностью...
Но это все мелочи. Эти нарушения "закладываются" в не самой удачной, на мой взляд, концепции конкретных соревнований. Для того, чтобы таких нарушений не было, достаточно 1) разрешить использование prewritten code и 2) готовить для соревнований оригигальные задачи.
А теперь о более серьезной вещи, которая может случиться на любых онлайн-соревнованиях. Речь об обмене кодом между участниками. Это самое серьезное нарушение, пункт о котором есть в правилах практически каждого соревнования. За это грозят пожизненной дисквалификацией и прочими карами. И хочется верить организаторам, что они действительно способны покарать читеров. Но насчет этого есть сомнения. И корень этих сомнений в том, что совершенно непонятно, как это проконтролировать. Кому-то может показаться, что это совсем просто: надо глазом (или программно) сравнить решения и сделать вывод, имела ли место передача кода. Не работает. Расскажу один случай. Дело в том, что меня хотели дисквалифицировать с Google Code Jam 2009 по подозрению в таком читерстве. Об этом можно почитать здесь . Обошлось:))
Тогда я в первый раз задумался, а как же просто, грамотно и эффективно бороться с подобными нарушениями правил? Какие у вас есть идеи? Какие еще разновидности читерства на онлайн-соревнованиях вы знаете? Сталкивались ли вы когда-нибудь с такими случаями? Были ли виновные наказаны?
А реально ли выиграть SRM, скопировав решение?
Какую ценность представляет ли ценность сам контест, на котором можно выиграть, скопировав решение?
Меня аналогичным образом так же оценивали - одним словом НЕАДЕКВАТ
Но каким то странным образом человеку выше достался одновременно минус... хммм
убрали бы эти +/-, кому они нужны
Или хотя бы только - убрали
Тогда всякие переименования переменных, накидывание лишнего кода и прочие подобные ухищрения не помогут. Насколько я знаю, подобный анализ реализован в проверяющей системе Вологодского ГТУ.
А что, если "уведут" только идею и переведут на другой программный язык? Так же я подозреваю, что можно такую систему обмануть.. навешать всякой "лапшы" , сделать эквивалентные замены и т.п.
По поводу системы Вологодского ГТУ - Сам не знаю,но прикольно выглядит вердикт системы - "Плагиат 100%" ))
Лапша не поможет, т.к. умный компилятор должен выкинуть ее при оптимизации. Понятно что обмануть все равно можно, вопрос в том какие придется приложить усилия.
1. Разрешить использование prewritten code на Codeforces, потому как ничего страшного в этом нет.
2. Сделать доступным просмотр решений любого участника после соревнований. Максимальная открытость - одно из лучших средств борьбы с читерством.
3. Ну, и конечно, четко прописать в правилах (которые должны вскоре появиться) различные виды наказаний за подобные вещи. Даже если особых способов контроля не будет.
А видимо другого выхода и нет, кроме как разрешить prewritten :)
Разве что можно запретить копипаст готового кода с интернета, но это же опять всплывает вопрос случайных совпадений... Вот допустим я напишу в контесте точно такой же код, как у себя на сайте :) Да и у других точно так же может случайно совпасть... Так что это кажется нерешаемой проблемой, в рамках онлайн-контеста. Только разрешать. А там уже каждый для себя будет решать.
Проконтролировать, что и кто скопировал в свои решения и откуда тоже с 100% веоятностью нельзя. Зачастую такие попытки будут приводить к наказанию невиновных => что-либо из разряда использования заготовок запрещать глупо.
Следует просто написать правила олимпиады так, как если бы она проходила очно. Лично я, если запретят использовать шаблоны кода, не буду их использовать. Единственное, что я копирую: список заголовочных файлов. Каждый, кого я знаю, никогда не станет общаться с кем-либо, если он участвует в контесте. Да просто потому, что время дорого. И в любом личном соревновании каждый сам за себя. А все интернет олимпиады - тренировочная площадка. А тренируется каждый для себя.
А, как правило, тому, кто плохо программирует, врядли помогут чьи-либо исходные коды. Если только решение совпадает один в один. А тому, кто хорошо, это просто-напросто не нужно.
Следовательно:
1) Правила олимпиады
2) "Надежда" на честную игру, что больше переводится в надежду на сознательноть тех, кто участвует, что, по-моему, заставляет вероятность нечестной игры стремиться к нулю. "Нечестная игра" реальной пользы не приносит, разве что цифру напротив имени.
3) Все-таки есть вариант поставить какие-то ограничения, пусть даже чересчур строгие. Читерство - дисквалификация из раунда. Чтобы у людей не было даже желания этим заниматься. Но... Но... Люди, конечно, будут понимать, что на компьютер обижаться глупо... Но... Довольно абстрактный вопрос. Если хотеть контроллировать все... То надо писать прикладное приложение, которое будет работать с сервером... В нем надо будет установить ограничения на то, чтобы оно могло запускаться только от суперпользователя, при открытии блокировало или логировало любые действия с файловой системой и буфером, писать удобный редактор, в котором можно было бы компилировать и тестировать, а может и дебажить решение. Сами видите, что это уже больше похоже на ядро с определенным программным обеспечением и надстройками, может быть на загрузочный дистрибутив. Да, который не будет поддерживать или разрешать подключение флешек, вставку дисков, контроллировать опред образом сетевой доступ, работу с файловой системой, единственное доступное - вход на codeforces и онлайн работа с исходниками, либо все-таки логирование работы с файловой системой, или что-то... вроде использования определенной свободной области на жестком диске, но не самим пользователем, а операционкой и ее приложениями. Ккакой-то редактор нужен... Но это уже более реально. Если отталкиваться от программного обеспечения, спец дистрибутива. Но это трудоемко... Очень... Но это в то же время перспективно... Я бы этим занялся... Если появится такое решение, то все олимпиады можно будет проводить с простым выходом в интернет, удаленно и объективно.
Никто не мешает писать контест на одном компе, а читить на другом (искать в интернете, переписывать код с экрана)
Особенно удобно такое делать с двумя ноутами, поставив их рядом.
Пока не вижу лазеек.
С камерой и микрофоном эти почти онсайт выходит.
Но как писать программы для слежения и проверки?
Это ж надо совершить прорыв в теории искусственного интеллекта и обработки изображений.
А хотя нет, уже вижу какие-то проблески, как прочитить.
Можно залепить камеру какой-то картинкой с роликом, где ты сидишь и что-то пишешь на контесте. Ну а микрофон сам по себе особо не спасет.
Разве что от звонков друзьям, но вполне достаточно и интернета на соседнем компе для любого рода читерств.
Я не думаю, что так просто будет убить или обмануть все системы... Например, если выпускать готовый продукт, как, например, OLPC. Все onboard. И камера и микрофон, корпус без возможности самостоятельной разброки, системы защиты и проверки работоспособности и родства комплектующих (это на уровне их разработки что-то особенное надо заложить), срабатывание при любом вторжении. Проверка работоспособности видео камеры и микрофона и их целостности, какая-то проверка на целостность и реальность картинки. Сейчас это просто слова, которые в теории, если эти слова выполнятся, сделают еще один шаг к полной изоляции людей в своих квартирах, что тоже не совсем хорошо. Но любой прорыв можно как-то использовать. Почти все в этом мире, понятное дело, можно взломать, обмануть, привести к ошибке, зациклить...
Но интересно как первое, так и второе. Защита - взлом)
Данная система дорога... сама по себе. И только из-за этого врядли будет реализована так или иначе. Хотя, майкрософт или appel, были бы непротив провести еще одну революцию) железную или программную, но все же.
Что-то в этом есть)
ребят, вы вообще о чём? =)
мы тут вроде бы только задачки решаем... :)