Skip to content

Commit 3889214

Browse files
committed
recreated validateCreditCard.js
1 parent cf52d08 commit 3889214

File tree

4 files changed

+4104
-3
lines changed

4 files changed

+4104
-3
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
function validateCreditCard(number) {
2+
const numStr = String(number);
3+
4+
// Must be exactly 16 digits, only numbers
5+
if (!/^\d{16}$/.test(numStr)) return false;
6+
7+
// Must contain at least two different digits
8+
const uniqueDigits = new Set(numStr);
9+
if (uniqueDigits.size < 2) return false;
10+
11+
// Last digit must be even
12+
const lastDigit = Number(numStr[numStr.length - 1]);
13+
if (lastDigit % 2 !== 0) return false;
14+
15+
// Sum must be greater than 16
16+
const sum = numStr
17+
.split("")
18+
.map(Number)
19+
.reduce((a, b) => a + b, 0);
20+
if (sum <= 16) return false;
21+
22+
return true;
23+
}
24+
25+
module.exports = validateCreditCard;

Sprint-3/3-stretch/validateCreditCard.test.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
const validateCreditCard = require("./validateCreditCard");
2+
13
test("valid credit card numbers should return true", () => {
24
expect(validateCreditCard("9999777788880000")).toBe(true);
35
expect(validateCreditCard("6666666666661666")).toBe(true);

0 commit comments

Comments
 (0)