Dato un numero, stabilisci se è valido secondo la formula di Luhn.
L'algoritmo di Luhn è una semplice formula di checksum usata per validare diversi tipi di numeri identificativi, come i numeri delle carte di credito e i numeri di previdenza sociale canadesi.
Il compito è controllare se una determinata stringa è valida.
Le stringhe di lunghezza pari o inferiore a 1 non sono valide. Nell'input sono ammessi gli spazi, ma vanno rimossi prima del controllo. Tutti gli altri caratteri non numerici non sono ammessi.
4539 3195 0343 6467
Il primo passo dell'algoritmo di Luhn consiste nel raddoppiare ogni seconda cifra, partendo da destra. Raddoppieremo
4539 3195 0343 6467
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ (double these)
Se raddoppiando la cifra si ottiene un numero maggiore di 9, sottrai 9 dal prodotto. Ecco i risultati del nostro raddoppio:
8569 6195 0383 3437
Poi somma tutte le cifre:
8+5+6+9+6+1+9+5+0+3+8+3+3+4+3+7 = 80
Se la somma è esattamente divisibile per 10, il numero è valido. Questo numero è valido!
8273 1232 7352 0569
Raddoppia le seconde cifre, partendo da destra
7253 2262 5312 0539
Somma le cifre
7+2+5+3+2+2+6+2+5+3+1+2+0+5+3+9 = 57
57 non è esattamente divisibile per 10, quindi questo numero non è valido.
Iscriviti a Exercism per imparare e padroneggiare CFML con 51 esercizi e il mentoring di persone reali, tutto gratis.
Esploriamo 8 versioni diverse di Luhn, partendo da un'implementazione Ruby molto pulita, passando per alcuni approcci imperativi e funzionali, e arrivando a una versione SQLite che ha richiesto un po' di lavoro a Erik e Jeremy per essere decifrata!