Luhn

Luhn

Medio

Istruzioni

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.

Come validare un numero

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.

Esempio 1: numero di carta di credito valido

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!

Esempio 2: numero di carta di credito non 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.

Nota

Leggi le istruzioni con attenzione: se le scorri distrattamente potresti perderti qualche dettaglio importante sulla direzione.

Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Pharo Exercism

Vuoi iniziare Luhn?

Iscriviti a Exercism per imparare e padroneggiare Pharo con 50 esercizi e il mentoring di persone reali, tutto gratis.

Approfondimento su Luhn!

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!