Luhn

Luhn

Media

Introducción

En la Autoridad Global de Verificación acabas de recibir un encargo crucial. Por toda la ciudad, desde las compras en línea hasta los inicios de sesión seguros, innumerables operaciones dependen de la exactitud de identificadores numéricos como los números de tarjeta de crédito, los números de cuenta bancaria, los códigos de transacción y los identificadores de seguimiento. El algoritmo de Luhn es una fórmula de suma de comprobación sencilla que se utiliza para garantizar que estos números sean válidos y no contengan errores.

Acaba de llegar a tu mesa un lote de identificadores. Todos ellos deben superar la prueba de Luhn para garantizar que son legítimos. Si alguno no lo hace, se marcará como no válido, lo que evita errores o fraudes, como transacciones incorrectas o accesos no autorizados.

¿Puedes asegurarte de que esto se haga bien? La integridad de muchos servicios depende de ti.

Instrucciones

Determina si un número de tarjeta de crédito es válido según la fórmula de Luhn.

El número se proporcionará como un string.

Validar un número

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.

Ejemplo 1: número de tarjeta de crédito válido

4539 3195 0343 6467

El primer paso del algoritmo de Luhn es duplicar cada segundo dígito, empezando por la derecha. Vamos a duplicar

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

Si al duplicar el número se obtiene un número mayor que 9, resta 9 al producto. El resultado de nuestra duplicación:

8569 6195 0383 3437

Después, 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!

Ejemplo 2: número de tarjeta de crédito no 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, así que este número no es válido.

Editar en GitHub El enlace se abre en una ventana o pestaña nueva
Scala Exercism

¿Listo para empezar Luhn?

Regístrate en Exercism para aprender y dominar Scala con 95 ejercicios y mentoría humana real, todo gratis.

¡Análisis en profundidad de Luhn!

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.