Luhn

Luhn

Médio

Instruções

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.

Validando um número

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.

Exemplo 1: número de cartão de crédito válido

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!

Exemplo 2: número de cartão de crédito invá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.

Observação

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.

Editar via GitHub O link abre em uma nova janela ou aba
Pharo Exercism

Tudo pronto para começar Luhn?

Crie sua conta no Exercism para aprender e dominar Pharo com 50 exercícios e mentoria humana de verdade, tudo de graça.

Mergulho profundo em Luhn!

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!