Дано число. Визначмо, чи є воно коректним за формулою Луна.
Алгоритм Луна є простою формулою контрольної суми, яку використовують для перевірки різноманітних ідентифікаційних номерів, як-от номерів кредитних карток чи канадських номерів соціального страхування.
Завдання - перевірити, чи є заданий рядок тексту (англ. string) коректним.
Рядки тексту завдовжки 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 без остачі, то число коректне. Це число коректне!
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 без остачі, тому це число некоректне.
Зареєструйтеся на Exercism, щоб вивчати й опановувати CFML, а також 51 вправа та справжнє наставництво від людей, і все це безкоштовно.
Ми розглядаємо 8 різних версій Luhn: починаємо з дуже охайної реалізації на Ruby, досліджуємо імперативні та функціональні підходи, а наприкінці доходимо до версії на SQLite, над розшифруванням якої Еріку та Джеремі довелося попрацювати!