Перед переводом по номеру карты приложение Сбера проверяет номер локально, без запроса к серверу. Номер — строка 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):
Источник: наша задача на данных Сбера. Условие пересказано своими словами.
Ожидаемый ответ не нужен: покажем, что вернула функция.
Здесь появится результат отправки.