Luhn

Luhn

Середня

Вказівки

За заданим числом визначте, чи є воно дійсним за формулою Луна.

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

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

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

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

Приклад 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 без остачі, тоді число дійсне. Це число дійсне!

Приклад 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 Посилання відкривається в новому вікні або вкладці
Pharo Exercism

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

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

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

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