From 3be58692ab232c358af1b31a6e0cf276643cb091 Mon Sep 17 00:00:00 2001 From: LordBaryhobal Date: Wed, 3 Dec 2025 09:56:17 +0100 Subject: [PATCH] feat: solve day 3 puzzle 1 --- README.md | 4 ++-- res/examples/day03.txt | 4 ++++ res/stats.json | 2 +- src/day03/puzzle1.lua | 41 +++++++++++++++++++++++++++++++++++++++++ src/day03/puzzle2.lua | 7 +++++++ 5 files changed, 55 insertions(+), 3 deletions(-) create mode 100644 res/examples/day03.txt create mode 100644 src/day03/puzzle1.lua create mode 100644 src/day03/puzzle2.lua diff --git a/README.md b/README.md index a82fa50..f936d71 100644 --- a/README.md +++ b/README.md @@ -8,10 +8,10 @@ This project can also be run using the amazing [CraftOS-PC emulator](https://git ## Progress -#### Stars: 4/24 +#### Stars: 5/24 |Mon|Tue|Wed|Thu|Fri|Sat|Sun| |:-:|:-:|:-:|:-:|:-:|:-:|:-:| -|1
:star::star:|2
:star::star:|3
|4
|5
|6
|7
| +|1
:star::star:|2
:star::star:|3
:star:|4
|5
|6
|7
| |8
|9
|10
|11
|12
||| diff --git a/res/examples/day03.txt b/res/examples/day03.txt new file mode 100644 index 0000000..6b1df6a --- /dev/null +++ b/res/examples/day03.txt @@ -0,0 +1,4 @@ +987654321111111 +811111111111119 +234234234234278 +818181911112111 \ No newline at end of file diff --git a/res/stats.json b/res/stats.json index 6de54de..1987838 100644 --- a/res/stats.json +++ b/res/stats.json @@ -8,7 +8,7 @@ "puzzle2": true }, "day03": { - "puzzle1": false, + "puzzle1": true, "puzzle2": false }, "day04": { diff --git a/src/day03/puzzle1.lua b/src/day03/puzzle1.lua new file mode 100644 index 0000000..fa6f156 --- /dev/null +++ b/src/day03/puzzle1.lua @@ -0,0 +1,41 @@ +local utils = require("utils") +local puzzle1 = {} + +function puzzle1.bankJoltages(bank) + local joltages = {} + for i=1, #bank do + table.insert(joltages, tonumber(bank:sub(i, i))) + end + return joltages +end + +function puzzle1.findMaxJoltage(bank) + local maxTens = 0 + local maxJoltage = 0 + local joltages = puzzle1.bankJoltages(bank) + + for i, tens in ipairs(joltages) do + if tens > maxTens then + for j=i+1, #joltages do + local ones = joltages[j] + local joltage = tens * 10 + ones + if joltage > maxJoltage then + maxTens = tens + maxJoltage = joltage + end + end + end + end + return maxJoltage +end + +function puzzle1.solve(input) + local banks = utils.splitLines(input) + local totalJoltage = 0 + for _, bank in ipairs(banks) do + totalJoltage = totalJoltage + puzzle1.findMaxJoltage(bank) + end + return totalJoltage +end + +return puzzle1 diff --git a/src/day03/puzzle2.lua b/src/day03/puzzle2.lua new file mode 100644 index 0000000..2f4bc9a --- /dev/null +++ b/src/day03/puzzle2.lua @@ -0,0 +1,7 @@ +local puzzle2 = {} + +function puzzle2.solve(input) + return 0 +end + +return puzzle2