Luhn

Luhn

Fácil

Instruções

Dado um número, determina se é ou não 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 tipos de números de identificação, como números de cartão de crédito e números do Seguro Social canadiano.

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

Validar um número

Strings de comprimento igual ou inferior a 1 não são válidas. Os espaços são permitidos na string a validar, 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, começando pela direita. Vamos duplicar

4539 3195 0343 6467
↑ ↑  ↑ ↑  ↑ ↑  ↑ ↑  (double these)

Se duplicar o algarismo resultar num 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 sem resto, 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, começando 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 sem resto, por isso este número não é válido.

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

Estás pronto para começar Luhn?

Inscreve-te no Exercism para aprenderes e dominares CFML com 51 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!