Files
adventofcode/2025/day03/main.go
2025-12-03 07:09:05 -06:00

55 lines
932 B
Go

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