Полный текст
У репозитория 190 тысяч звёзд на GitHub. Внутри — реализация Boyer-Moore, классического алгоритма поиска подстроки. Звучит надежно. Ну, звёзды же есть.Автор решил проверить код тестами и увидел кое-что. Результаты правильные, но сам алгоритм фактически работает как простой перебор. Всё из-за одной детали в Python — переменную цикла меняют внутри for, а на следующий шаг это никак не влияет.Вот так учебный код может проходить проверки и расходиться дальше по курсам, статьям и чужим проектам. Разбираем этот баг, еще одну ловушку с бесконечным циклом и старую проблему из оригинальной статьи 1977 года. Хорошее напоминание, что даже классические алгоритмы иногда стоит не только читать, но и проверять.