Добрый день!
А существует ли какая-то опция или плагин к ejudge для обнаружения плагиата в сабмитах (между разными участниками одного контеста)? Интересует хотя бы простенькие нотификации от автоматического diff-а, инвариантного к пробелам и переименованию переменных/функций/классов.
Спасибо.
Обнаружение плагиата в сабмитах
Re: Обнаружение плагиата в сабмитах
По-моему, только стандартный diff.
В мастере View source/Compare this run with run:
Прикрутите сами к ejudge что-то вроде этого http://imcs.dvgu.ru/works/work?wid=1225 , и мы скажем вам спасибо
В мастере View source/Compare this run with run:
Прикрутите сами к ejudge что-то вроде этого http://imcs.dvgu.ru/works/work?wid=1225 , и мы скажем вам спасибо

Re: Обнаружение плагиата в сабмитах
Средства нахождения плагиата есть, но каждый их владелец предпочитает не особо описывать
их работу и тем более не выкладывать в открытый доступ с исходным кодом
их работу и тем более не выкладывать в открытый доступ с исходным кодом

Re: Обнаружение плагиата в сабмитах
cher:
Вы про "жадность", или про засекреченность алгоритмов сравнения от участников?
П.С. Можно попробовать реализовать поддержку подключения модулей сравнения текстов.
П.П.С. А вообще, считаю, что данная тема не так сильно распространена по следующим причинам:
1. Контроль уникальности решений - проблема надзора за участниками на местах. Исключение - интернет-соревнования, в них контроль не всегда возможен.
2. Проблемы могут возникнуть при сравнении решений простых задач, или задач с общеизвестным стандартным решеним. Решения могут быть похожыми даже если участники их писали самостоятельно.
3. Как описать грань между "решения похожи" и "решения идентичны"?
Вы про "жадность", или про засекреченность алгоритмов сравнения от участников?
П.С. Можно попробовать реализовать поддержку подключения модулей сравнения текстов.
П.П.С. А вообще, считаю, что данная тема не так сильно распространена по следующим причинам:
1. Контроль уникальности решений - проблема надзора за участниками на местах. Исключение - интернет-соревнования, в них контроль не всегда возможен.
2. Проблемы могут возникнуть при сравнении решений простых задач, или задач с общеизвестным стандартным решеним. Решения могут быть похожыми даже если участники их писали самостоятельно.
3. Как описать грань между "решения похожи" и "решения идентичны"?
Re: Обнаружение плагиата в сабмитах
Я о секретности алгоритма. И да, все замечания vk справедливы.
Re: Обнаружение плагиата в сабмитах
Мне кажется, что должен быть какой-то стандартный алгоритм базовой проверки плагиата кода (без сверхсложных предположений). Странно держать его в секрете. Да и вряд ли много участников контестов будут смотреть исходники ejudge и специально изменять скопированное решение так, чтобы оно проходило проверку на плагиат
Такие участники обычно могут и решение правильное написать сами.
Стандартный diff помогает, но нужно сравнивать каждую пару решений. Плюс от простого переименований переменных это не спасёт (каждая строчка будет разная).
Определитель плагиата может иногда ошибаться (например указывать два простых независимых решения как плагиат), это не страшно - всяко лучше, чем его полное отсутствие
Посмотрю, что можно сделать с http://imcs.dvgu.ru/works/work?wid=1225, спасибо.

Стандартный diff помогает, но нужно сравнивать каждую пару решений. Плюс от простого переименований переменных это не спасёт (каждая строчка будет разная).
Определитель плагиата может иногда ошибаться (например указывать два простых независимых решения как плагиат), это не страшно - всяко лучше, чем его полное отсутствие

Посмотрю, что можно сделать с http://imcs.dvgu.ru/works/work?wid=1225, спасибо.
Re: Обнаружение плагиата в сабмитах
Такие участники могут и за других участников сдавать решения. За различные формы вознагражденияvyahhi wrote:Мне кажется, что должен быть какой-то стандартный алгоритм базовой проверки плагиата кода (без сверхсложных предположений). Странно держать его в секрете. Да и вряд ли много участников контестов будут смотреть исходники ejudge и специально изменять скопированное решение так, чтобы оно проходило проверку на плагиатТакие участники обычно могут и решение правильное написать сами.

Можно встроить обычный diff, сравнивающий все пары решений, но как Вы сами пишете, толку от этого немного.vyahhi wrote:Стандартный diff помогает, но нужно сравнивать каждую пару решений. Плюс от простого переименований переменных это не спасёт (каждая строчка будет разная).
Определитель плагиата может иногда ошибаться (например указывать два простых независимых решения как плагиат), это не страшно - всяко лучше, чем его полное отсутствие

Попробуйте, но, поскольку это курсовая работа 3 курса, думаю, что с ней ничего толкового не сделаешь.vyahhi wrote:Посмотрю, что можно сделать с http://imcs.dvgu.ru/works/work?wid=1225, спасибо.
Re: Обнаружение плагиата в сабмитах
Все же лучше, чем простой дифф, имхо.cher wrote:Попробуйте, но, поскольку это курсовая работа 3 курса, думаю, что с ней ничего толкового не сделаешь.
Но опять же встает вопрос о попарном сравнении. Вот если придумать какую-нибудь хеш-функцию для решений ...