const fs = require('fs'); const input = fs.readFileSync(__dirname + '/input.txt', 'utf8'); let safe = 0; function checkSequence(seq: Array): 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);