Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions .eslintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{
"parserOptions": {
"ecmaVersion": 6
},
"rules": {
"keyword-spacing": 1,
"space-before-function-paren": [1, "never"],
"eqeqeq": 1,
"space-infix-ops": 1,
"comma-spacing": 1,
"brace-style": 1,
"no-multiple-empty-lines": 1,
"camelcase": 1,
"func-call-spacing": 1,
"key-spacing": 1,
"semi": 1,
"no-floating-decimal": 1,
"no-multi-spaces": 1,
"object-property-newline": 1,
"padded-blocks": [1, "never"],
"space-before-blocks": 1,
"space-in-parens": 1,
"spaced-comment": 1,
"quotes": [1, "single"],
"id-length": [1, { "exceptions": ["i", "j", "x"] }],
"indent": [1, 2],
"no-array-constructor": 1
}
}
50 changes: 50 additions & 0 deletions app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
/* Crea una web que pida, por medio de un prompt(), el número de una tarjeta de crédito y confirme su validez según el algoritmo de Luhn. Lee este blog que explica cómo funciona el algoritmo de Luhn.
Consideraciones Específicas
Tu código debe estar compuesto por 1 función: isValidCard
El usuario no debe poder ingresar un campo vacío
*/
// hago un prompt en donde pido al usuarioque ingrese el número de su tarjeta de crédito
var question = prompt('Ingresa el número de tu tarjeta');
// hago la función cardNumberInArray
function cardNumberInArray(cardNumber) {
// creo un array vacío para que se guarde mi nuevo array
var cardNumberInArrayReverse = [];
// hago una condicional que solo acepte números, no vacíos o strings
if (cardNumber === '') {
return prompt('Ingreso no válido \nVuelva a ingresar el número de su tarjeta');
// si lo ingresado es un número pasa al proceso de convertir en un array
} else {
for (var i = 0 ; i < cardNumber.length; i++) {
cardNumberInArrayReverse.unshift(parseInt(cardNumber.charAt(i)));
}
return cardNumberInArrayReverse;
}
}
console.log(cardNumberInArray(question));

var newNumberCard = cardNumberInArrayReverse;
// declaro la funcion cardNumberDuplicated para preparar mi array nuevo con las posiciones pares duplicadas y así luego ingrese al proceso de validación según el algoritmo de Luhn
function preparesForAlgorithm(newNumberCard) {
var arrayToNewCard = [];
for (var index = 0; index < newNumberCard.length; index++) {
// hago un for para ubicar las posiciones pares dentro de newNumberCard
if (u % 2 === 1) {
// extraigo los digitos de las posiciones pares de newNumberCard
var result = newCard[index] * 2;
// hago la condición para fijarme que los resultados que son mayor a 10, puedan sumar sus dos cifras
if (result >= 10) {
var sum = 0; // creo la variable sum para que guarde el resultado de la suma de cifras de los resultados mayores a 10
for (var i = 0; i < String(result).length; i++) {
// un for que recorra mi array, tengo que convertir result en un string para poder extraer la primera cifra
sum += parseInt(String(result).charAt(i)); // como result en realidad es un string, puedo aplicar un charAt y extraer una de sus "cifras" en string, por lo que debo convertir con un parseInt a un number
}
arrayToNewCard.push(sum); // agrego al nuevo array la suma de los digitos del digito duplicado que es>=10.
} else {
arrayToNewCard.push(result); // agrego al nuevo array los digitos duplicados <10.
}
} else {
arrayToNewCard.push(newNumberCard[j]); // agregando al nuevo array los digitos de las posiciones impares.
}
}
return arrayToNewCard; // Retornar el nuevo array
}
Binary file added assets/img/DiagramaDeFlujo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 10 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Tarjeta de crédito válida</title>
</head>
<body>
<script type="text/javascript" src="app.js">
</body>
</html>
13 changes: 13 additions & 0 deletions pseudocodigo.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@

## Pseudocódigo

1. Primero tengo que crear una variable que contega el prompt 'Inserta tu numero de tarjeta', allí el usuario pone su número que sería el input.
2. Luego lo que hago es condicionar que el input sea únicamente number, no un string o vacío.
3. Sigue el código para que el input "correctamente ingresado" se convierta en un array por medio de un for y nuevo hago otro que contenga los mismos digitos pero al revés.
4. Después de hacer esto, tengo que ubicarme en los digitos que se encuentren en las ubicaciones pares.
5. Al extraerlo tengo que multiplicarlo por 2. Si y solo si, el número obtenido es mayor a 10, tengo que sumar sus cifras y quedarme con el producto, este será el nuevo dígito.
6. Hago un arreglo con los nuevos dígitos.
7. Creo una nueva funcion ya para validar.
8. Comienzo a recorrer en el algoritmo.
9. Sumo todos los elemetos de mi array, es decir de los nuevos dígitos.
10. Si la suma es menor a 10, hago un alert 'Tarjeta valida', si es mayor o igual a 10 hago un alert de 'Tarjeta ínvalida'.