From 97095a87955191f273d068889e8e62266472121b Mon Sep 17 00:00:00 2001 From: Elizabeth Hunt Date: Sun, 3 Dec 2023 22:22:47 -0700 Subject: day 04 --- aoc_2023/day-04/part_1.ts | 48 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 aoc_2023/day-04/part_1.ts (limited to 'aoc_2023/day-04/part_1.ts') diff --git a/aoc_2023/day-04/part_1.ts b/aoc_2023/day-04/part_1.ts new file mode 100644 index 0000000..a026c5e --- /dev/null +++ b/aoc_2023/day-04/part_1.ts @@ -0,0 +1,48 @@ +export const main = async (lines: string[]): Promise => { + let sum = 0; + + for (const line of lines) { + const [cardS, numbersS] = line.split(" | "); + const cardNums = cardS + .split(":") + .at(1)! + .split(" ") + .filter((x) => x) + .map((x) => x.trim()) + .map((x) => parseInt(x)); + const winners = numbersS + .split(" ") + .filter((x) => x) + .map((x) => x.trim()) + .map((x) => parseInt(x)); + + console.log(cardNums, winners); + + const winnerSet = new Set(winners); + const wins = cardNums.reduce( + (acc, x) => acc + (winnerSet.has(x) ? 1 : 0), + 0 + ); + if (wins > 0) sum += Math.pow(2, wins - 1); + } + + return sum; +}; + +// + +const isrun = process.argv.length > 1 && process.argv[1] === import.meta.path; +if (isrun) { + const file = Bun.file("./problem.txt"); + const text = await file.text(); + const lines = text.split("\n").filter((x) => x && x.length); + + console.log("=== COMPUTATION ===\n"); + + const answer = await main(lines); + + console.log("\n=== /COMPUTATION ===\n"); + + console.log("=== ANSWER TO P1 ==="); + console.log(answer); +} -- cgit v1.2.3-70-g09d2