Реализовать консольную утилиту для нечеткого поиска подстроки в строке.
Предусмотреть:
- Интерфейс командной строки (CLI) с соответствующими флагами и параметрами для каждой функции
- Поиск символов произвольных алфавитов
- Чувствительность/нечувствительность к регистру
- Параметр отвечающий за поиск
k
первых вхождений - Параметр отвечающий за поиск с начала/конца
- Поиск в файле произвольного текстового формата
- Вывод результата в консоль
- Ограничение на количество выводимого текста (не более 10 строк)
- Цветовое выделение (свой цвет для каждой подстроки, если их несколько) найденных подстрок
- Вывод результата в файл
- Поиск производить параллельно (указывая количество потоков), например, разбивая текст на части или производя поиск разных подстрок (алгоритм расширения выборки) или строя таблицы N-грамм
См. утилиты grep
и agrep
.
- Линейный поиск с метрикой расстояния Левенштейна
- Линейный поиск с метрикой расстояния Дамерау-Левенштейна
- Двоичный алгоритм Bitap или Shift-Or с модификацией Wu-Manber
- BK-деревья
- Алгоритм расширения выборки
- Метод N-грамм
Требования к реализации см. в работе 1.3 "Поиск подстрок в строке".
Поиск должен учитывать ошибки следующих видов:
- вставка: кот → корт
- удаление: корт → кот
- замена: кот → код
Дополнительные требования см. в работе 1.3 "Поиск подстрок в строке".
Оценка выставляется в соответствии со следующими требованиями:
- Общие требования:
- код работы проходит проверку утилитой
pylint
с конфигурационным файлом.pylintrc
. - код работы успешно проходит тесты, если таковые имеются.
- наличие документации к модулям, функциям, классам и методам.
- наличие аннотации типов.
- код работы проходит проверку утилитой
- На оценку 3 балла:
- реализовать пункты 1, 2, 3 и 7.
- На оценку 4 балла:
- дополнительно реализовать пункты 4, 5 и 11.
- На оценку 5 балла:
- реализовать все методы, указанные в описании к работе.