Войти Регистрация
Фронтенд

59. Маска номера карты в переводах Т‑Банка

Лёгкая

В переводе по номеру карты Т‑Банк показывает получателя в списке недавних: «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
строкиалгоритм Лунаформатирование

Источник: на задачах Т‑Банка: перевод по номеру карты. Условие пересказано своими словами.