Luhn

Luhn

Легка

Вказівки

Дано число. Визначмо, чи є воно коректним за формулою Луна.

Алгоритм Луна є простою формулою контрольної суми, яку використовують для перевірки різноманітних ідентифікаційних номерів, як-от номерів кредитних карток чи канадських номерів соціального страхування.

Завдання - перевірити, чи є заданий рядок тексту (англ. string) коректним.

Перевірка числа

Рядки тексту завдовжки 1 символ або менше некоректні. Пробіли у вхідних даних допускаються, але перед перевіркою їх потрібно прибрати. Усі інші символи, які не є цифрами, заборонені.

Приклад 1: коректний номер кредитної картки

4539 3195 0343 6467

Перший крок алгоритму Луна - подвоїти кожну другу цифру, починаючи справа. Будемо подвоювати

4539 3195 0343 6467
↑ ↑  ↑ ↑  ↑ ↑  ↑ ↑  (double these)

Якщо в результаті подвоєння цифри утворюється число, більше за 9, тоді віднімаємо 9 від добутку. Ось результати нашого подвоєння:

8569 6195 0383 3437

Далі додамо всі цифри:

8+5+6+9+6+1+9+5+0+3+8+3+3+4+3+7 = 80

Якщо сума ділиться на 10 без остачі, то число коректне. Це число коректне!

Приклад 2: некоректний номер кредитної картки

8273 1232 7352 0569

Подвоїмо кожну другу цифру, починаючи справа

7253 2262 5312 0539

Знайдемо суму цифр

7+2+5+3+2+2+6+2+5+3+1+2+0+5+3+9 = 57

57 не ділиться на 10 без остачі, тому це число некоректне.

Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
CFML Exercism

Час розпочати Luhn?

Зареєструйтеся на Exercism, щоб вивчати й опановувати CFML, а також 51 вправа та справжнє наставництво від людей, і все це безкоштовно.

Глибоке занурення у Luhn!

Ми розглядаємо 8 різних версій Luhn: починаємо з дуже охайної реалізації на Ruby, досліджуємо імперативні та функціональні підходи, а наприкінці доходимо до версії на SQLite, над розшифруванням якої Еріку та Джеремі довелося попрацювати!