Hello to all,
I am on the Credit Card Checker Project in the Full-Stack Engineer Path. The URL of the exercise can be found here.
I am trying to validate the credit card number based on the sum, but the sum that I find is wrong, which results in an invalid credit card when I know it is valid based on the array of the valid cards.
Here is my source code:
// 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]
// const valid6 = [4, 5, 3, 9, 6, 8, 9, 8, 8, 7, 7, 0, 5, 7, 9, 8]
// 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]
// Add your functions below:
function validateCredit(valid) {
/*
Start with valid.length - 2, because last element does not count.
Then, use i-- and every other element, double the digit
If the number is greater than 9, subtract 9 from that number
For example if an array length is 16 and you subtract 1 from it, because
the last item does not count, then you have an odd array, 15
If an array length is 15 and you subtract 1 from it, because
the last item does not count, then you have an even array, 14
Then, for the starter even array, you want to find the sum of all the elements that
their index is odd, then multiply their value and if their value is greater than 9,
then subtract 9.
On the other hand, if the starter array is odd, you want to find all the sum of the elements
that their index is even and that's that.
Their you will find their sum.
Array Length = 16 --> Even
valid.length = 16
16 - 2 = 14
*/
let sum = 0;
let sum0 = 0;
let sum1 = 0;
let sum2 = 0;
console.log("Array Length: " + valid.length);
for (let i = valid.length - 2; i >= 0; i--) {
console.log("[" + i + "] - " + valid[i]);
// If array is even
// [0] - [15]
if (valid.length % 2 == 0) {
if (i % 2 == 0) {
valid[i] = valid[i] * 2;
if (valid[i] > 9) {
valid[i] = valid[i] - 9;
sum1 = sum1 + valid[i];
console.log("sum1:" + sum1 + " of [" + i + "]");
}
else {
sum0 = sum0 + valid[i];
console.log("sum0:" + sum0 + " of [" + i + "]");
}
}
else {
sum2 = sum2 + valid[i];
console.log("sum2:" + sum2 + " of [" + i + "]");
}
}
sum = sum0 + sum1 + sum2;
}
if (sum % 10 == 0) {
console.log("Sum: " + sum + " - Number is Valid.\n");
}
else {
console.log("Sum: " + sum + " - Number is Invalid.\n");
}
}
validateCredit(valid1);
Thanks in advance!