refactor: clean up solution to part 1 on day 2
This commit is contained in:
+4
-37
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user