Files
adventofcode/2025/day03/main.go
2025-12-03 07:02:52 -06:00

55 lines
987 B
Go

package main
import (
"fmt"
h "git.bullercodeworks.com/brian/adventofcode/helpers"
)
func main() {
inp := h.StdinToStringSlice()
part1(inp)
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))
}
fmt.Println("# Part 1")
fmt.Println(res)
}
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))
}
fmt.Println("# Part 2")
fmt.Println(res)
}
func findBest(inp string, rem int) (byte, int) {
var best byte
var pos int
for i := 0; i < len(inp)-rem; i++ {
if inp[i] > best {
best, pos = inp[i], i
}
}
return best, pos
}