From 44973098cbd5079cd782b6b1b00860d39bd2400d Mon Sep 17 00:00:00 2001 From: Elizabeth Hunt Date: Tue, 5 Dec 2023 22:13:08 -0700 Subject: [PATCH] day 06 --- aoc_2023/day-06/example.test.ts | 18 ++++++++++ aoc_2023/day-06/logs/.gitkeep | 0 aoc_2023/day-06/logs/out_1.txt | 8 +++++ aoc_2023/day-06/logs/out_2.txt | 7 ++++ aoc_2023/day-06/part_1.ts | 58 +++++++++++++++++++++++++++++++++ aoc_2023/day-06/part_2.ts | 38 +++++++++++++++++++++ aoc_2023/day-06/problem.txt | 2 ++ 7 files changed, 131 insertions(+) create mode 100644 aoc_2023/day-06/example.test.ts create mode 100644 aoc_2023/day-06/logs/.gitkeep create mode 100644 aoc_2023/day-06/logs/out_1.txt create mode 100644 aoc_2023/day-06/logs/out_2.txt create mode 100644 aoc_2023/day-06/part_1.ts create mode 100644 aoc_2023/day-06/part_2.ts create mode 100644 aoc_2023/day-06/problem.txt diff --git a/aoc_2023/day-06/example.test.ts b/aoc_2023/day-06/example.test.ts new file mode 100644 index 0000000..17dc63d --- /dev/null +++ b/aoc_2023/day-06/example.test.ts @@ -0,0 +1,18 @@ +import { expect, test } from "bun:test"; +import { main as part1 } from "./part_1"; +import { main as part2 } from "./part_2"; + +const example = `Time: 7 15 30 +Distance: 9 40 200`.split("\n"); + +test("part1", async () => { + const answer = 288; + const res = await part1(example); + expect(res).toEqual(answer); +}); + +test("part2", async () => { + const answer = 71503; + const res = await part2(example); + expect(res).toEqual(answer); +}); diff --git a/aoc_2023/day-06/logs/.gitkeep b/aoc_2023/day-06/logs/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/aoc_2023/day-06/logs/out_1.txt b/aoc_2023/day-06/logs/out_1.txt new file mode 100644 index 0000000..dfa6222 --- /dev/null +++ b/aoc_2023/day-06/logs/out_1.txt @@ -0,0 +1,8 @@ +=== COMPUTATION === + +[ 48, 93, 85, 95 ] [ 296, 1928, 1236, 1391 ] + +=== /COMPUTATION === + +=== ANSWER TO P1 === +2756160 diff --git a/aoc_2023/day-06/logs/out_2.txt b/aoc_2023/day-06/logs/out_2.txt new file mode 100644 index 0000000..acc44e7 --- /dev/null +++ b/aoc_2023/day-06/logs/out_2.txt @@ -0,0 +1,7 @@ +=== COMPUTATION === + + +=== /COMPUTATION === + +=== ANSWER TO P2 === +34788142 diff --git a/aoc_2023/day-06/part_1.ts b/aoc_2023/day-06/part_1.ts new file mode 100644 index 0000000..041685f --- /dev/null +++ b/aoc_2023/day-06/part_1.ts @@ -0,0 +1,58 @@ +export const main = async (lines: string[]): Promise => { + const times = lines[0] + .split(":") + .at(1)! + .split(" ") + .filter((x) => x) + .map((x) => parseInt(x)); + + const distances = lines[1] + .split(":") + .at(1)! + .split(" ") + .filter((x) => x) + .map((x) => parseInt(x)); + + console.log(times, distances); + + let prod = 1; + + for (let i = 0; i < distances.length; i++) { + const [time, record] = [times[i], distances[i]]; + + let winTimes = 0; + + for ( + let buttonPressLength = 0; + buttonPressLength <= time; + buttonPressLength++ + ) { + const timeTraveled = time - buttonPressLength; + const totalDistance = buttonPressLength * timeTraveled; + + if (totalDistance > record) winTimes++; + } + + prod *= winTimes; + } + + return prod; +}; + +// + +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); +} diff --git a/aoc_2023/day-06/part_2.ts b/aoc_2023/day-06/part_2.ts new file mode 100644 index 0000000..56fe05d --- /dev/null +++ b/aoc_2023/day-06/part_2.ts @@ -0,0 +1,38 @@ +export const main = async (lines: string[]): Promise => { + const distance = parseInt(lines[1].split(":").at(1)!.replaceAll(" ", "")); + + const time = parseInt(lines[0].split(":").at(1)!.replaceAll(" ", "")); + + let winTimes = 0; + + for ( + let buttonPressLength = 0; + buttonPressLength <= time; + buttonPressLength++ + ) { + const timeTraveled = time - buttonPressLength; + const totalDistance = buttonPressLength * timeTraveled; + + if (totalDistance > distance) winTimes++; + } + + return winTimes; +}; + +// + +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 P2 ==="); + console.log(answer); +} diff --git a/aoc_2023/day-06/problem.txt b/aoc_2023/day-06/problem.txt new file mode 100644 index 0000000..f3805ad --- /dev/null +++ b/aoc_2023/day-06/problem.txt @@ -0,0 +1,2 @@ +Time: 48 93 85 95 +Distance: 296 1928 1236 1391