Dado um número, determine se ele é válido ou não de acordo com a fórmula de Luhn.
O algoritmo de Luhn é uma fórmula simples de soma de verificação usada para validar diversos números de identificação, como números de cartão de crédito e números de seguro social canadenses.
A tarefa é verificar se uma string é válida.
Strings de comprimento 1 ou menos não são válidas. Espaços são permitidos na entrada, mas devem ser removidos antes da verificação. Todos os outros caracteres que não sejam dígitos são proibidos.
4539 3195 0343 6467
O primeiro passo do algoritmo de Luhn é dobrar cada segundo dígito, começando pela direita. Vamos dobrar
4_3_ 3_9_ 0_4_ 6_6_
Se dobrar o número resultar em um valor maior que 9, subtraia 9 do produto. O resultado das nossas dobras:
8569 6195 0383 3437
Agora some todos os dígitos:
8+5+6+9+6+1+9+5+0+3+8+3+3+4+3+7 = 80
Se a soma for divisível por 10, o número é válido. Este número é válido!
8273 1232 7352 0569
Dobre os segundos dígitos, começando pela direita
7253 2262 5312 0539
Some os dígitos
7+2+5+3+2+2+6+2+5+3+1+2+0+5+3+9 = 57
57 não é divisível por 10, então este número não é válido.
Leia as instruções com atenção. Se você passar os olhos rápido demais, pode deixar escapar alguns detalhes importantes sobre a direção.
Crie sua conta no Exercism para aprender e dominar Pharo com 50 exercícios e mentoria humana de verdade, tudo de graça.
Exploramos 8 versões diferentes de Luhn, começando com uma implementação em Ruby muito bem organizada, passando por algumas abordagens imperativas e funcionais, e terminando com uma versão em SQLite que deu trabalho para Erik e Jeremy decifrar!