Библиотека для антиплагиата кода

Mentor: n0str

Описание

На курсах по программированию студентам зачастую выдается задание написать программу, которая проходит определенные тесты. Некоторые студенты не хотят выполнять задание самостоятельно, поэтому они копируют код своих знакомых, внося небольшие правки. Преподавателю хотелось бы иметь удобный интерфейс для определения доли сходства работы с другими работами. При этом нужно понимать, что для простых заданий код может быть очень похожим.

Что мы хотим

Необходимо разработать библиотеку на языке Python, которая будет:

  1. Получать на вход проверяемый сэмпл кода и массив уже сданных другими студентами сэмплов. А также порог срабатывания (чувствительность).
  2. Производить оценку сходства проверяемого и имеющихся сэмплов.
  3. Оценка должна учитывать различные подходы (необходимо проанализировать литературу). Возможно, текстовые методы будут работать значительно хуже чем построение AST и другие методы.
  4. На выходе утилиты - список кортежей [id записи, доля плагиата], в которых доля плагиата больше либо равна значению порога, отсортированных по убыванию доли плагиата.
  5. Разработать консольную утилиту, использующую данную библиотеку и принимающую на вход путь до директории с файлами.

Дополнительные фичи приветствуются.

Критерии оценивания

Корректность работы, удобство интеграции библиотеки, вычислительная сложность, реальное время выполнения и затрачиваемые ресурсы.

Ограничения

Язык Python.