-
-
Save codecademydev/90d44d45f3ca72ff483ae8d51442d5eb to your computer and use it in GitHub Desktop.
Codecademy export
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// All valid credit card numbers | |
const valid1 = [4, 5, 3, 9, 6, 7, 7, 9, 0, 8, 0, 1, 6, 8, 0, 8]; | |
const valid2 = [5, 5, 3, 5, 7, 6, 6, 7, 6, 8, 7, 5, 1, 4, 3, 9]; | |
const valid3 = [3, 7, 1, 6, 1, 2, 0, 1, 9, 9, 8, 5, 2, 3, 6]; | |
const valid4 = [6, 0, 1, 1, 1, 4, 4, 3, 4, 0, 6, 8, 2, 9, 0, 5]; | |
const valid5 = [4, 5, 3, 9, 4, 0, 4, 9, 6, 7, 8, 6, 9, 6, 6, 6]; | |
// All invalid credit card numbers | |
const invalid1 = [4, 5, 3, 2, 7, 7, 8, 7, 7, 1, 0, 9, 1, 7, 9, 5]; | |
const invalid2 = [5, 7, 9, 5, 5, 9, 3, 3, 9, 2, 1, 3, 4, 6, 4, 3]; | |
const invalid3 = [3, 7, 5, 7, 9, 6, 0, 8, 4, 4, 5, 9, 9, 1, 4]; | |
const invalid4 = [6, 0, 1, 1, 1, 2, 7, 9, 6, 1, 7, 7, 7, 9, 3, 5]; | |
const invalid5 = [5, 3, 8, 2, 0, 1, 9, 7, 7, 2, 8, 8, 3, 8, 5, 4]; | |
// Can be either valid or invalid | |
const mystery1 = [3, 4, 4, 8, 0, 1, 9, 6, 8, 3, 0, 5, 4, 1, 4]; | |
const mystery2 = [5, 4, 6, 6, 1, 0, 0, 8, 6, 1, 6, 2, 0, 2, 3, 9]; | |
const mystery3 = [6, 0, 1, 1, 3, 7, 7, 0, 2, 0, 9, 6, 2, 6, 5, 6, 2, 0, 3]; | |
const mystery4 = [4, 9, 2, 9, 8, 7, 7, 1, 6, 9, 2, 1, 7, 0, 9, 3]; | |
const mystery5 = [4, 9, 1, 3, 5, 4, 0, 4, 6, 3, 0, 7, 2, 5, 2, 3]; | |
// An array of all the arrays above | |
const batch = [valid1, valid2, valid3, valid4, valid5, invalid1, invalid2, invalid3, invalid4, invalid5, mystery1, mystery2, mystery3, mystery4, mystery5]; | |
const companies = {3 : "Amex", 4 : "Visa", 5 : "Mastercard", 6 : "Discover"}; //helper array for the companies | |
// Add your functions below: | |
function validateCred(arr) | |
{ | |
let double = false; //check if it needs to double the digit | |
let sum = 0; //sum | |
for(let i = arr.length - 1; i >= 0; i--) //loop through the digits in the array | |
{ | |
sum += (double ? ((arr[i]*2) > 9 ? (arr[i]*2 - 9) : arr[i]*2) : (arr[i])); //checks if double is true, if so, double the number and check if its greater than nine, if so, subtract 9. If false, add the number in either case | |
double = (double ? false : true); //toggle flag | |
} | |
return (sum % 10) === 0; //check the validity of the sum, return true/false if the remainder is 0 | |
} | |
function findInvalidCards(nestedArr) | |
{ | |
let a = 0; //to aid the ternary operation | |
let invalid = []; //resultant array | |
nestedArr.forEach(function(arr){validateCred(arr) ? a = 0 : invalid.push(arr)}); //go through rach array, if valid, do nothing otherwise add to result array | |
return invalid; //return array | |
} | |
function idInvalidCardCompanies(arrays) | |
{ | |
let a = 0; //to aid the ternary operation | |
let invalidCompany = []; //resultant array | |
arrays.forEach(function(arr){(invalidCompany.includes(companies[arr[0]])) ? a = 0 : invalidCompany.push(companies[arr[0]])}); //if the compnay is found but not incuded, add it to the resultant array. otherwise, do nothing | |
return invalidCompany; //return array | |
} | |
//console.log(idInvalidCardCompanies(findInvalidCards(batch))); | |
batch.forEach(function(arr){console.log(validateCred(arr))}); | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment