package day02 import ( "adventofcode2025/utils" "fmt" "strings" ) func Part1(input string) int { ranges := strings.Split(input, ",") count := 0 for _, r := range ranges { min_s, max_s := strings.Split(r, "-")[0], strings.Split(r, "-")[1] min := utils.MustAtoi(min_s) max := utils.MustAtoi(max_s) for i := min; i <= max; i++ { s := fmt.Sprintf("%d", i) if len(s)%2 != 0 { continue } if s[:len(s)/2] != s[len(s)/2:] { continue } count += utils.MustAtoi(s) } } return count } func Part2(input string) int { ranges := strings.Split(input, ",") count := 0 for _, r := range ranges { min_s, max_s := strings.Split(r, "-")[0], strings.Split(r, "-")[1] min := utils.MustAtoi(min_s) max := utils.MustAtoi(max_s) for i := min; i <= max; i++ { s := fmt.Sprintf("%d", i) for numDigits := 1; numDigits <= len(s)/2; numDigits++ { if len(s)%numDigits != 0 { continue } found := true for j := 1; j < len(s)/numDigits; j++ { if s[0:numDigits] != s[j*numDigits:(j+1)*numDigits] { found = false continue } } if found { count += utils.MustAtoi(s) break } } } } return count }