Dado un número, determina si es válido según la fórmula de Luhn.
El algoritmo de Luhn es una fórmula de suma de verificación simple que se utiliza para validar una variedad de números de identificación, como números de tarjetas de crédito y números de la Seguridad Social canadiense.
La tarea consiste en comprobar si un string dado es válido.
Los strings de longitud 1 o menos no son válidos. Los espacios están permitidos en la entrada, pero deben eliminarse antes de comprobar. Cualquier otro carácter que no sea un dígito no está permitido.
4539 3195 0343 6467
El primer paso del algoritmo de Luhn es duplicar cada segundo dígito, empezando por la derecha. Vamos a duplicar
4_3_ 3_9_ 0_4_ 6_6_
Si al duplicar el dígito se obtiene un número mayor que 9, resta 9 al producto. Los resultados de nuestra duplicación:
8569 6195 0383 3437
Luego suma todos los dígitos:
8+5+6+9+6+1+9+5+0+3+8+3+3+4+3+7 = 80
Si la suma es divisible por 10, entonces el número es válido. ¡Este número es válido!
8273 1232 7352 0569
Duplica los segundos dígitos, empezando por la derecha
7253 2262 5312 0539
Suma los dígitos
7+2+5+3+2+2+6+2+5+3+1+2+0+5+3+9 = 57
57 no es divisible por 10, por lo que este número no es válido.
Lee las instrucciones con atención. Si las lees por encima, podrías perderte algún detalle importante sobre la dirección.
Regístrate en Exercism para aprender y dominar Pharo con 50 ejercicios y mentoría humana real, todo gratis.
Exploramos 8 versiones distintas de Luhn, empezando por una implementación de Ruby muy pulida, pasando por algunos enfoques imperativos y funcionales y terminando con una versión en SQLite que a Erik y Jeremy les costó un poco descifrar.