From c1bb5f02bb8fbd7b02173a153c00cd21a8e8a818 Mon Sep 17 00:00:00 2001 From: Brian Buller Date: Wed, 3 Dec 2025 07:09:05 -0600 Subject: [PATCH] Day 3 Optimized --- 2025/day03/main.go | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/2025/day03/main.go b/2025/day03/main.go index 7186f06..80cc902 100644 --- a/2025/day03/main.go +++ b/2025/day03/main.go @@ -9,19 +9,15 @@ import ( func main() { inp := h.StdinToStringSlice() part1(inp) + fmt.Println() part2(inp) } func part1(inp []string) { var res int for i := range inp { - wrk := inp[i] - best, tPos := []byte{'0', '0'}, -1 - for j := range best { - best[j], tPos = findBest(wrk, (len(best)-j)-1) - wrk = wrk[tPos+1:] - } - res += h.Atoi(string(best)) + best := []byte{'0', '0'} + res += solve(inp[i], best) } fmt.Println("# Part 1") fmt.Println(res) @@ -30,18 +26,22 @@ func part1(inp []string) { func part2(inp []string) { var res int for i := range inp { - wrk := inp[i] - best, tPos := []byte{'0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'}, -1 - for j := range best { - best[j], tPos = findBest(wrk, (len(best)-j)-1) - wrk = wrk[tPos+1:] - } - res += h.Atoi(string(best)) + best := []byte{'0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'} + res += solve(inp[i], best) } fmt.Println("# Part 2") fmt.Println(res) } +func solve(inp string, best []byte) int { + var tPos int + for j := range best { + best[j], tPos = findBest(inp, (len(best)-j)-1) + inp = inp[tPos+1:] + } + return h.Atoi(string(best)) +} + func findBest(inp string, rem int) (byte, int) { var best byte var pos int