Files
AoC/2024/02/index.ts
2024-12-02 23:37:11 +00:00

48 lines
1.1 KiB
TypeScript

const fs = require('fs');
const input = fs.readFileSync(__dirname + '/input.txt', 'utf8');
let safe = 0;
function checkSequence(seq: Array<number>): boolean {
let pointer = 0;
let prev = seq[pointer];
pointer++;
let inc = seq[pointer] > prev;
while (pointer < seq.length) {
const next = seq[pointer];
pointer++;
if (inc ? next < prev : next > prev) {
return false;
}
const diff = Math.abs(next - prev);
if (diff <= 0 || diff > 3) {
return false;
}
prev = next;
}
return true;
}
input.split("\n")
.forEach((s: string) => {
if (s.match('^\s*$')) {
return;
}
const seq = s.split(' ').map((n) => parseInt(n));
const isSafe = checkSequence(seq);
if (!isSafe) {
// Part 2
for (let i = 0; i < seq.length; i++) {
if (checkSequence([...seq.slice(0, i), ...seq.slice(i + 1)])) {
safe++;
return;
}
}
// End part 2
return;
}
safe++;
});
console.log(safe);