Dato un numero, determina 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 assicurazione sociale canadesi.
Il compito è verificare se una data stringa è valida.
Le stringhe di lunghezza pari o inferiore a 1 non sono valide. Gli spazi sono ammessi nell'input, ma vanno rimossi prima della verifica. 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
4_3_ 3_9_ 0_4_ 6_6_
Se raddoppiando una cifra si ottiene un numero maggiore di 9, sottrai 9 dal prodotto. 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 è divisibile esattamente 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 è divisibile esattamente per 10, quindi questo numero non è valido.
Leggi le istruzioni con attenzione: se le scorri distrattamente potresti perderti qualche dettaglio importante sulla direzione.
Iscriviti a Exercism per imparare e padroneggiare Pharo con 50 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!