refactor: clean up solution to part 1 on day 2

This commit is contained in:
Stevan Freeborn
2025-12-03 20:47:27 -06:00
parent 3b86c59044
commit e75a498018
3 changed files with 128 additions and 37 deletions
+4 -37
View File
@@ -1,57 +1,24 @@
package main
import (
"strconv"
"strings"
"github.com/StevanFreeborn/advent-of-code-2025/cmd/02/rnge"
"github.com/StevanFreeborn/advent-of-code-2025/internal/file"
)
const SeparatorCharacter = ","
const RangeSeparatorCharacter = "-"
type Range struct {
Start int64
End int64
}
func SolvePartOne(filePath string) int64 {
input := file.ReadAllText(filePath)
strRanges := strings.SplitSeq(input, SeparatorCharacter)
rngs := []Range{}
for r := range strRanges {
parts := strings.Split(strings.TrimSpace(r), "-")
start, _ := strconv.ParseInt(parts[0], 10, 64)
end, _ := strconv.ParseInt(parts[1], 10, 64)
rng := Range{
Start: start,
End: end,
}
rngs = append(rngs, rng)
}
total := int64(0)
for _, rng := range rngs {
for id := rng.Start; id <= rng.End; id++ {
idStr := strconv.FormatInt(id, 10)
idLength := len(idStr)
if idLength%2 != 0 {
continue
}
midpoint := idLength / 2
firstHalf := idStr[:midpoint]
secondHalf := idStr[midpoint:]
if firstHalf != secondHalf {
continue
}
for r := range strRanges {
rng := rnge.From(r)
for id := range rng.InvalidIds() {
total += id
}
}