From bae91ea0425b6d646618123b1a0c6cd09d388e21 Mon Sep 17 00:00:00 2001 From: Sven Weidauer Date: Sat, 3 Dec 2022 09:06:51 +0100 Subject: [PATCH] 2022 Day 3 Part 1 --- 2022/day3.js | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 2022/day3.js diff --git a/2022/day3.js b/2022/day3.js new file mode 100644 index 0000000..562e4d0 --- /dev/null +++ b/2022/day3.js @@ -0,0 +1,36 @@ +const readline = require('readline'); +const fs = require('fs'); + +function calculate_score(input) { + if ('a' <= input && input <= 'z') { + return input.charCodeAt(0) - 'a'.charCodeAt(0) + 1; + } else if ('A' <= input && input <= 'Z') { + return input.charCodeAt(0) - 'A'.charCodeAt(0) + 27; + } else { + throw `Invalid character '${input}'` + } +} + +async function puzzle() { + + const lines = readline.createInterface({ + input: fs.createReadStream('day3.input'), + }); + + var score = 0; + for await (const line of lines) { + const mid = line.length / 2; + const first = line.substring(0, mid); + const second = new Set(line.substring(mid)); + + for (const character of first) { + if (second.has(character)) { + score += calculate_score(character); + break; + } + } + } + console.log(`Part 1: Score ${score}`); +} + +puzzle();