-
Notifications
You must be signed in to change notification settings - Fork 0
/
04a.js
38 lines (34 loc) · 1.21 KB
/
04a.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// which day is running
console.log('running day 4 part a...');
// too lazy to make and read in an input file
input = [264793, 803935]
// check each password
// rule 1: six digits (already sorted)
// rule 2: within range given (already sorted)
// rule 3: two adjacent digits are the same
// rule 4: digits are non-decreasing
var pw = input[0]; // password as number
var pwd; // list of digits
var d; // one digit
var i; // index of selected digit (0 for most significant)
var num_valid = 0; // number of valid passwords
var rule3 = false; // whether the password satisfies the rule
pw_loop:
for (pw = input[0]; pw <= input[1]; pw++) {
pwd = pw.toString().split('')
for (i = 0; i < pwd.length - 1; i++) {
// if decreasing, go to next password
// if equal, record that it satisfies rule 3
if (parseInt(pwd[i]) > parseInt(pwd[i+1])) {
continue pw_loop;
} else if (parseInt(pwd[i]) == parseInt(pwd[i+1])) {
rule3 = true;
}
}
// if we get here, it satisfies rule 4
if (rule3) {
num_valid += 1;
rule3 = false; // reset rule3
}
}
console.log('number of valid passwords: ' + num_valid)