summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--aoc_2023/day-06/example.test.ts18
-rw-r--r--aoc_2023/day-06/logs/.gitkeep0
-rw-r--r--aoc_2023/day-06/logs/out_1.txt8
-rw-r--r--aoc_2023/day-06/logs/out_2.txt7
-rw-r--r--aoc_2023/day-06/part_1.ts58
-rw-r--r--aoc_2023/day-06/part_2.ts38
-rw-r--r--aoc_2023/day-06/problem.txt2
7 files changed, 131 insertions, 0 deletions
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
--- /dev/null
+++ b/aoc_2023/day-06/logs/.gitkeep
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<number | string> => {
+ 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<number | string> => {
+ 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