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() {
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