В переводе по номеру карты Т‑Банк показывает получателя в списке недавних: «2200 70•• •••• 6781». Номер вставляют из заметок с пробелами, дефисами или слитно.
Напишите maskCard(input). Уберите пробелы и дефисы; другие символы — ошибка, верните null. Номер — от 16 до 19 цифр, иначе null.
Номер должен проходить проверку по алгоритму Луна: идём справа налево, каждую вторую цифру удваиваем, из результата больше 9 вычитаем 9, сумма всех цифр делится на 10. Не проходит — null.
В ответе видны первые 6 цифр (код банка) и последние 4, остальные заменены на •. Цифры разбиты на группы по 4 слева через пробел; у 19-значного номера последняя группа из трёх.
В работе: Получатель ошибся одной цифрой в номере из 16 — проверка Луна ловит это до запроса в процессинг.
Пример 1: Мир, 16 цифр с пробелами
"2200 7001 2345 6781"
"2200 70•• •••• 6781"
Пример 2: слитно
"5536910000123457"
"5536 91•• •••• 3457"
maskCard — тест вызывает её сам. Таймеры и Date в тестах ненастоящие: время идёт по команде теста, поэтому setTimeout на 5 секунд проверяется мгновенно. Тестов 11: 2 открыты выше, остальные приходят после старта подхода. Лимит — 2 с на тест.
function maskCard(input) // → string | null
Источник: на задачах Т‑Банка: перевод по номеру карты. Условие пересказано своими словами.
Ожидаемый ответ не нужен: покажем, что вернула функция.
Здесь появится результат отправки.