File tree Expand file tree Collapse file tree 1 file changed +46
-0
lines changed Expand file tree Collapse file tree 1 file changed +46
-0
lines changed Original file line number Diff line number Diff line change 1+ function validateCreditCard ( cardNumber ) {
2+ const numStr = cardNumber . toString ( ) ;
3+
4+ if ( numStr . length !== 16 ) {
5+ return false ;
6+ } // Number must be 16 digits.
7+
8+ const uniqueDigits = new Set ( numStr ) ;
9+ if ( uniqueDigits . size < 2 ) {
10+ return false ;
11+ } // Must have at least two different digits.
12+
13+ const lastDigit = Number ( numStr [ numStr . length - 1 ] ) ;
14+ if ( lastDigit % 2 !== 0 ) {
15+ return false ;
16+ } // Last digit must be even.
17+
18+ let sum = 0 ;
19+ for ( let char of numStr ) {
20+ sum += Number ( char ) ;
21+ } // Sum of all digits must be greater than 16.
22+
23+ if ( sum <= 16 ) {
24+ return false ;
25+ } // Sum check
26+
27+ return true ;
28+ }
29+
30+ // Test cases:
31+
32+ // Number must be 16 digits
33+ console . log ( validateCreditCard ( 9999 ) ) ; // false
34+ console . log ( validateCreditCard ( 9999888877776662 ) ) ; // true
35+
36+ // Must have at least two different digits
37+ console . log ( validateCreditCard ( 1111111111111111 ) ) ; // false
38+ console . log ( validateCreditCard ( 1234567890123456 ) ) ; // true
39+
40+ // Last digit must be even
41+ console . log ( validateCreditCard ( 1234567890123451 ) ) ; // false
42+ console . log ( validateCreditCard ( 1234567890123452 ) ) ; // true
43+
44+ // Sum of all digits must be greater than 16
45+ console . log ( validateCreditCard ( 1111111111111110 ) ) ; // false
46+ console . log ( validateCreditCard ( 1234567890123456 ) ) ; // true
You can’t perform that action at this time.
0 commit comments