-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.js
28 lines (23 loc) · 965 Bytes
/
main.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
const fs = require("fs");
let path = process.argv[1].replace("/main.js", "");
let buffer = fs.readFileSync(`${path}/input.txt`);
let rows = buffer.toString().split("\n").filter(row => row.length > 0);
let validCount = 0;
let validCount2 = 0;
rows.forEach(row => {
let [policy, password] = row.split(": ");
let [policyIntervals, policyChar] = policy.split(" ");
let policyFrom = parseInt(policyIntervals.split("-")[0]);
let policyTo = parseInt( policyIntervals.split("-")[1]);
let occurencies = password.split(policyChar).length - 1;
if (occurencies >= policyFrom && occurencies <= policyTo) {
validCount++;
}
let char1 = password[policyFrom-1];
let char2 = password[policyTo-1];
if (char1 !== char2 && (char1 === policyChar || char2 === policyChar)) {
validCount2++;
}
});
console.log(`Valid passwords: ${validCount} out of ${rows.length} (part1)`);
console.log(`Valid passwords: ${validCount2} out of ${rows.length} (part2)`);