"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Día / Días del Código: Desafío del Validador de Tarjetas de Crédito

Día / Días del Código: Desafío del Validador de Tarjetas de Crédito

Publicado el 2024-11-05
Navegar:760

Day /  Days of Code: Credit Card Validator Challenge

Domingo 15 de septiembre de 2024

Esta semana se ha centrado en desafíos de código, ¡lo cual ha sido glorioso! Un desafío intrigante fue implementar un validador de tarjetas de crédito utilizando el algoritmo de Luhn, que previene errores de tarjetas de crédito de un solo dígito y transposiciones adyacentes como 90 > 09. Codificar el algoritmo de Luhn es bastante factible; repasemos mi implementación.

Primero, tomemos un momento para comprender de qué se trata la Programación Funcional (FP). En lugar de tener una función imperativa en la que pone en cola los números de tarjetas de crédito para realizar pruebas, la verificación del número de tarjetas de crédito puede ser un método que se aplica directamente a las variables de los números de tarjetas de crédito. Este enfoque modular aumenta el valor de su código porque se puede utilizar de más formas sin tener que volver a escribirlo. Un efecto secundario de la FP es que los datos se convierten en la estrella, no las funciones, lo que parece muy simplificado.

Para comenzar, usaremos una función de flecha de acuerdo con el paradigma FP. Esto es más importante en funciones de una sola línea, pero sigue siendo práctico.

  • Dejar a un lado el último dígito: el primer paso en el algoritmo de Luhn es reservar el último dígito en una variable que llamaremos lastDigit. Esto sigue un método estándar para acceder a los elementos de la matriz utilizando la longitud de la matriz: 1, ya que las matrices comienzan la numeración de elementos en 0. JavaScript proporciona esta característica de forma nativa para las matrices.

  • Invertir la matriz: el algoritmo de Luhn funciona con dígitos de tarjetas de crédito de derecha a izquierda. Para simplificar las cosas, invertiremos la matriz. JavaScript proporciona dos métodos para simplificar esta operación: dividir para seleccionar del primero al penúltimo elemento y revertir para invertir el orden de los elementos en la matriz. Asignaremos esto a una nueva matriz llamada allExceptLastReversed.

  • Duplicar todos los demás elementos: el siguiente paso requiere un control más preciso de la iteración de los elementos de la matriz que el que proporcionan los métodos iterativos de JavaScript, por lo que usaremos un bucle for tradicional. Este paso implica duplicar cada dos elementos de la matriz y, si el valor es superior a 9, restar 9.

  • Suma los elementos y valida: ya casi hemos terminado. Queremos sumar todos los elementos de la matriz y verificar que sean divisibles por 10. JavaScript tiene un método iterativo llamado reducir que aplica una función, generalmente suma o producto, a cada elemento de una matriz y acumula el resultado. Aquí sumaremos los elementos de la matriz cortados invertidos, agregaremos el último dígito y verificaremos si la suma módulo 10 es 0.

JavaScript también proporciona comparaciones lógicas, para evaluar como verdadero o falso, llamadas valores booleanos, que son los valores de retorno de la función. JavaScript hace que la programación sea casi ingeniosa.

Este desafío fue una manera fantástica de profundizar en los paradigmas de programación tanto funcionales como imperativos. Destacó la importancia de escribir código modular y reutilizable. A medida que continúo mi viaje de 100 días de código, estoy emocionado de enfrentar más desafíos y ampliar mi comprensión de diferentes conceptos de programación. Cada día trae nuevas oportunidades para aprender y crecer, y no puedo esperar a ver adónde me lleva este viaje.

¡Estén atentos para más actualizaciones y feliz codificación! ?

Aquí está el código completo:

const validateCred = (cardNumber) => {
  const lastDigit = cardNumber[cardNumber.length - 1];
  let allExceptLastReversed = cardNumber.slice(0, -1).reverse();
  for (let i = 0; i  9) {
      allExceptLastReversed[i] -= 9; 
    }
  }
  const sum = allExceptLastReversed.reduce((acc, curr) => acc   curr, 0)   lastDigit; 
  // sum all digits
  return (sum % 10 === 0);
};

Publicación cruzada: Desarrollador https://dev.to/jacobsternx y LinkedIn https://www.linkedin.com/in/jacobsternx

Declaración de liberación Este artículo se reproduce en: https://dev.to/jacobsternx/day-77-100-days-of-code-credit-card-validator-challenge-93m?1 Si hay alguna infracción, comuníquese con Study_golang@163 .com para eliminarlo
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3