Контрольная цифра
Задание 1Введение
Цель: Реализовать алгоритм Луна — контрольную сумму номеров карт.
Напишите luhn_valid(num): проверка номера карты алгоритмом Луна. Пробелы игнорируются. Если после удаления пробелов осталось меньше 2 символов или есть не-цифры — False.
Задание 2Теория и инструменты
Последняя цифра номера карты — контрольная. Алгоритм Луна ловит любую одиночную ошибку и большинство перестановок соседних цифр.
Это защита от опечаток, а не от подделки.
Инструменты
- Python 3 или Node.js
- Встроенные тесты в редакторе
Больше теории — в разделе «Обучение: Защита (код)».
Задание 3Практика: напишите код
Примеры
luhn_valid("4539 1488 0343 6467")
→ trueluhn_valid("4539 1488 0343 6468")
→ falseЕщё 10 скрытых тестов.
Пошаговый план — открывайте по одному шагу
- 1Уберите пробелы и проверьте, что остались только цифры.
- 2Справа налево удваивайте каждую вторую цифру, из результата больше 9 вычитайте 9.
- 3Сумма должна делиться на 10.
Подсказки — каждая до решения стоит −10 очков
Задание 4Как защититься
Проверку Луна делают до отправки на платёжный шлюз, чтобы не нагружать его заведомо неверными номерами.
Разборы участников
Разборы открываются после того, как вы решите комнату, — чтобы не спойлерить ответ.