За заданим числом визначте, чи є воно дійсним за формулою Луна.
Алгоритм Луна - це проста формула контрольної суми, яку застосовують для перевірки різноманітних ідентифікаційних номерів, як-от номери кредитних карток і номери соціального страхування Канади.
Завдання полягає в тому, щоб перевірити, чи заданий рядок тексту (англ. string) є дійсним.
Рядки тексту довжиною 1 або менше не є дійсними. Пробіли у вхідних даних дозволені, але їх слід прибрати перед перевіркою. Усі інші символи, що не є цифрами, заборонені.
4539 3195 0343 6467
Перший крок алгоритму Луна - подвоїти кожну другу цифру, починаючи справа. Ми будемо подвоювати
4_3_ 3_9_ 0_4_ 6_6_
Якщо подвоєння цифри дає число, більше за 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, щоб вивчати й опановувати Pharo, а також 50 вправ та справжнє наставництво від людей, і все це безкоштовно.
Ми розглядаємо 8 різних версій Luhn: починаємо з дуже охайної реалізації на Ruby, досліджуємо імперативні та функціональні підходи, а наприкінці доходимо до версії на SQLite, над розшифруванням якої Еріку та Джеремі довелося попрацювати!