Files
adventofcode/2025/day02/main.go
2025-12-02 07:18:03 -06:00

68 lines
1.1 KiB
Go

package main
import (
"fmt"
"strings"
h "git.bullercodeworks.com/brian/adventofcode/helpers"
)
func main() {
inp := h.StdinToString()
part1(inp)
part2(inp)
}
func part1(inp string) {
var res int
ranges := getRanges(inp)
for _, rng := range ranges {
for wrk := rng.beg; wrk <= rng.end; wrk++ {
sWrk := h.Itoa(wrk)
hlf := len(sWrk) / 2
if sWrk[:hlf] == sWrk[hlf:] {
res += wrk
}
}
}
fmt.Println("# Part 1")
fmt.Println(res)
}
func part2(inp string) {
var res int
ranges := getRanges(inp)
for _, rng := range ranges {
for wrk := rng.beg; wrk <= rng.end; wrk++ {
sWrk := h.Itoa(wrk)
cnt := len(sWrk)
for i := 0; i < cnt/2; i++ {
ch := i + 1
if cnt%ch != 0 { // Must be divisible
continue
}
if strings.Repeat(sWrk[:ch], cnt/ch) == sWrk {
res += wrk
break
}
}
}
}
fmt.Println("# Part 2")
fmt.Println(res)
}
type Range struct {
beg, end int
}
func getRanges(inp string) []Range {
ret := []Range{}
segs := strings.Split(inp, ",")
for i := range segs {
pts := strings.Split(segs[i], "-")
ret = append(ret, Range{beg: h.Atoi(pts[0]), end: h.Atoi(pts[1])})
}
return ret
}