Luhn

Luhn

Médio

Instruções

Dado um número, determina se é válido segundo a fórmula de Luhn.

O algoritmo de Luhn é uma fórmula simples de soma de verificação usada para validar vários números de identificação, como números de cartões de crédito e números de segurança social canadianos.

A tarefa é verificar se uma determinada string é válida.

Validar um número

Strings com comprimento 1 ou menos não são válidas. São permitidos espaços no valor de entrada, mas devem ser removidos antes da verificação. Todos os outros carateres que não sejam algarismos não são permitidos.

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

4539 3195 0343 6467

O primeiro passo do algoritmo de Luhn é duplicar cada segundo algarismo, a começar pela direita. Vamos duplicar

4_3_ 3_9_ 0_4_ 6_6_

Se duplicar o número der um número maior que 9, subtrai 9 ao produto. Os resultados da nossa duplicação:

8569 6195 0383 3437

Depois, soma todos os algarismos:

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

Duplica cada segundo algarismo, a começar pela direita

7253 2262 5312 0539

Soma os algarismos

7+2+5+3+2+2+6+2+5+3+1+2+0+5+3+9 = 57

57 não é divisível por 10, por isso este número não é válido.

Nota

Lê as instruções com atenção: se apenas passares os olhos, podes perder detalhes importantes sobre a direção.

Editar via GitHub A ligação abre numa nova janela ou separador
Pharo Exercism

Estás pronto para começar Luhn?

Inscreve-te no Exercism para aprenderes e dominares Pharo com 50 exercícios, e mentoria humana real, tudo grátis.

Mergulha a fundo em Luhn!

Exploramos 8 versões diferentes do Luhn, começando com uma implementação Ruby muito arrumada, passando por algumas abordagens imperativas e funcionais e acabando numa versão SQLite que deu algum trabalho ao Erik e ao Jeremy a decifrar!