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