From 8ff8564f40bba8eeb3b07333a4c4d1c12d6487c2 Mon Sep 17 00:00:00 2001 From: Chris Date: Mon, 2 Dec 2024 23:37:11 +0000 Subject: [PATCH] Day 2 --- 2024/01/index.ts | 16 ++++++++-------- 2024/02/index.ts | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 8 deletions(-) create mode 100644 2024/02/index.ts diff --git a/2024/01/index.ts b/2024/01/index.ts index 46f34bf..a57ea07 100644 --- a/2024/01/index.ts +++ b/2024/01/index.ts @@ -1,5 +1,4 @@ const fs = require('fs'); -const _ = require('lodash'); const input = fs.readFileSync(__dirname + '/input.txt', 'utf8'); @@ -16,17 +15,18 @@ input.split("\n").forEach((n: string) => { }); // Part 1 -// arr1.sort(); -// arr2.sort(); +arr1.sort(); +arr2.sort(); -// let sum = 0; +let sum = 0; -// arr1.forEach((v, k) => { -// sum += Math.max(v, arr2[k]) - Math.min(v, arr2[k]); -// }); +arr1.forEach((v, k) => { + sum += Math.max(v, arr2[k]) - Math.min(v, arr2[k]); +}); -// console.log(sum); +console.log(sum); +// Part 2 const map: { [key: number]: number } = {}; arr2.forEach((v) => { diff --git a/2024/02/index.ts b/2024/02/index.ts new file mode 100644 index 0000000..41ed8a1 --- /dev/null +++ b/2024/02/index.ts @@ -0,0 +1,48 @@ +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); \ No newline at end of file