← Все комнаты Путь «Первые шаги» →Путь «Защита (код)» →
НовичокЗащита (код) Код Осенний CTF

Контрольная цифра

Прогресс комнаты 0 / 4
Задание 1Введение

Цель: Реализовать алгоритм Луна — контрольную сумму номеров карт.

Напишите luhn_valid(num): проверка номера карты алгоритмом Луна. Пробелы игнорируются. Если после удаления пробелов осталось меньше 2 символов или есть не-цифры — False.

Задание 2Теория и инструменты

Последняя цифра номера карты — контрольная. Алгоритм Луна ловит любую одиночную ошибку и большинство перестановок соседних цифр.

Это защита от опечаток, а не от подделки.

Инструменты

  • Python 3 или Node.js
  • Встроенные тесты в редакторе

Больше теории — в разделе «Обучение: Защита (код)».

Задание 3Практика: напишите код

Примеры

Пример 1
luhn_valid("4539 1488 0343 6467")
→ true
Пример 2
luhn_valid("4539 1488 0343 6468")
→ false

Ещё 10 скрытых тестов.

solution
Ctrl+Enter — отправить Войдите, чтобы отправить

Пошаговый план — открывайте по одному шагу

  1. 1
    Уберите пробелы и проверьте, что остались только цифры.

Подсказки — каждая до решения стоит −10 очков

Задание 4Как защититься

Проверку Луна делают до отправки на платёжный шлюз, чтобы не нагружать его заведомо неверными номерами.

Разборы участников

Разборы открываются после того, как вы решите комнату, — чтобы не спойлерить ответ.