Day 3 Optimized

This commit is contained in:
2025-12-03 07:09:05 -06:00
parent 60ac4c3f06
commit c1bb5f02bb

View File

@@ -9,19 +9,15 @@ import (
func main() { func main() {
inp := h.StdinToStringSlice() inp := h.StdinToStringSlice()
part1(inp) part1(inp)
fmt.Println()
part2(inp) part2(inp)
} }
func part1(inp []string) { func part1(inp []string) {
var res int var res int
for i := range inp { for i := range inp {
wrk := inp[i] best := []byte{'0', '0'}
best, tPos := []byte{'0', '0'}, -1 res += solve(inp[i], best)
for j := range best {
best[j], tPos = findBest(wrk, (len(best)-j)-1)
wrk = wrk[tPos+1:]
}
res += h.Atoi(string(best))
} }
fmt.Println("# Part 1") fmt.Println("# Part 1")
fmt.Println(res) fmt.Println(res)
@@ -30,18 +26,22 @@ func part1(inp []string) {
func part2(inp []string) { func part2(inp []string) {
var res int var res int
for i := range inp { for i := range inp {
wrk := inp[i] best := []byte{'0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'}
best, tPos := []byte{'0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'}, -1 res += solve(inp[i], best)
for j := range best {
best[j], tPos = findBest(wrk, (len(best)-j)-1)
wrk = wrk[tPos+1:]
}
res += h.Atoi(string(best))
} }
fmt.Println("# Part 2") fmt.Println("# Part 2")
fmt.Println(res) 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) { func findBest(inp string, rem int) (byte, int) {
var best byte var best byte
var pos int var pos int