Войти Регистрация
Алгоритмы

202. Проверка номера карты перед переводом

Лёгкая

Перед переводом по номеру карты приложение Сбера проверяет номер локально, без запроса к серверу. Номер — строка number, в ней могут быть пробелы между группами цифр.

Проверка по алгоритму Луна: идём с конца, каждую вторую цифру (вторую, четвёртую, …) удваиваем; если вышло больше 9, вычитаем 9. Номер верный, если сумма всех цифр делится на 10. Верните False, если после удаления пробелов осталось меньше двух символов или есть не цифры.

В работе: Одна опечатка в 16 цифрах ловится всегда, перестановка соседних — почти всегда: клиент видит «проверьте номер» сразу, а не после отказа платёжной системы.

Пример 1

Ввод
number = "4276 3800 0000 0005"
Вывод
True

Пример 2

Ввод
number = "4276 3800 0000 0007"
Вывод
False

Последняя цифра изменена — сумма уже не делится на 10.

Ограничения

  • 1 ≤ длина number ≤ 30
  • Лимит — 2 с на тест (1500 мс).
Как вызывается ваш код Читать ввод и печатать ответ не нужно: мы вызываем функцию на каждом тесте и сравниваем то, что она вернула. print() и console.log() уходят в консоль.
def card_number_ok(number):
СтрокиАрифметикаКонтрольная суммацельO(n)

Источник: наша задача на данных Сбера. Условие пересказано своими словами.