From 0aa40e557a87313793c73239ecafe8592c2da547 Mon Sep 17 00:00:00 2001 From: Joshua Seigler Date: Thu, 5 Dec 2024 00:48:27 -0500 Subject: [PATCH] cleaner, better --- .aocrunner.json | 6 +++--- src/day05/index.ts | 33 +++++++++++---------------------- 2 files changed, 14 insertions(+), 25 deletions(-) diff --git a/.aocrunner.json b/.aocrunner.json index c008653..fd7e9dd 100644 --- a/.aocrunner.json +++ b/.aocrunner.json @@ -66,13 +66,13 @@ "solved": true, "result": "4905", "attempts": [], - "time": 29.389645 + "time": 28.306566 }, "part2": { "solved": true, - "result": "6204", + "result": "0", "attempts": [], - "time": 54.772924 + "time": 35.287833 } }, { diff --git a/src/day05/index.ts b/src/day05/index.ts index e9271e5..04c7e5f 100644 --- a/src/day05/index.ts +++ b/src/day05/index.ts @@ -11,33 +11,22 @@ const parseInput = (rawInput: string) => { const part1 = (rawInput: string) => { const {rules, updates} = parseInput(rawInput) return updates.reduce((total, update) => { - let seen: number[] = [] - for (const page of update) { - if (rules.some(rule => seen.includes(rule[1]) && rule[0] === page)) { - return total - } - seen.push(page) - } - return total + seen[Math.floor(seen.length / 2)] + const sortedUpdate = [...update].sort((p1,p2) => { + return rules.some(rule => rule[0] === p1 && rule[1] === p2) ? -1 : 1 + }) + if (update.join() !== sortedUpdate.join()) return total + return total + update[Math.floor(update.length / 2)] }, 0) } const part2 = (rawInput: string) => { const {rules, updates} = parseInput(rawInput) return updates.reduce((total, update) => { - let seen: number[] = [] - for (const page of update) { - if (rules.some(rule => seen.includes(rule[1]) && rule[0] === page)) { - // needs fixing - const sortedUpdate = update.sort((p1,p2) => { - return rules.some(rule => rule[0] === p1 && rule[1] === p2) ? -1 : 1 - }) - return total + update[Math.floor(update.length / 2)] - } - seen.push(page) - } - // it's fine - return total + const sortedUpdate = [...update].sort((p1,p2) => { + return rules.some(rule => rule[0] === p1 && rule[1] === p2) ? -1 : 1 + }) + if (update.join() === sortedUpdate.join()) return total + return total + sortedUpdate[Math.floor(update.length / 2)] }, 0) } @@ -115,5 +104,5 @@ run({ solution: part2, }, trimTestInputs: true, - onlyTests: false, + onlyTests: true, })