Почти тот же пароль
Задание 1Введение
Цель: Запрещать почти одинаковые пароли.
Напишите too_similar(old, new): True, если новый пароль отличается от старого не больше чем на 2 правки (вставка, удаление, замена символа) без учёта регистра.
Задание 2Теория и инструменты
Пользователи меняют Summer2024! на Summer2025!. Если старый пароль утёк, новый угадывается мгновенно.
Расстояние Левенштейна считает минимальное число правок между строками.
Инструменты
- Python 3 или Node.js
- Встроенные тесты в редакторе
Больше теории — в разделе «Обучение: Защита (код)».
Задание 3Практика: напишите код
Примеры
too_similar("Summer2024!", "Summer2025!")
→ truetoo_similar("Summer2024!", "summer2024")
→ trueЕщё 6 скрытых тестов.
Пошаговый план — открывайте по одному шагу
- 1Приведите строки к нижнему регистру.
- 2Заполните таблицу расстояний построчно, храня две строки.
- 3Сравните результат с 2.
Подсказки — каждая до решения стоит −50 очков
Задание 4Как защититься
Сравнивайте при смене пароля, пока старый ещё введён. Хранить пароли открытым текстом для этого нельзя.
Разборы участников
Разборы открываются после того, как вы решите комнату, — чтобы не спойлерить ответ.