package main import ( "flag" "fmt" "os" "regexp" "strconv" "strings" ) var ( inputFile = flag.String("input", "input.txt", "input filename") nRegex = regexp.MustCompile(`(?m)\d`) reMap = map[string]string{ "one": "1", "two": "2", "three": "3", "four": "4", "five": "5", "six": "6", "seven": "7", "eight": "8", "nine": "9", } ) func main() { flag.Parse() input, err := os.ReadFile(*inputFile) if err != nil { panic(err) } var sum int for _, line := range strings.Split(string(input), "\n") { var fLine, lLine string for i := 0; i < len(line); i++ { fLine += string(line[i]) for k, v := range reMap { fLine = strings.ReplaceAll(fLine, k, v) } } fmt.Println(fLine) for i := len(line) - 1; i >= 0; i-- { if i == len(line)-1 { lLine = string(line[i]) } else { lLine = string(line[i]) + lLine } for k, v := range reMap { lLine = strings.ReplaceAll(lLine, k, v) } } fmt.Println(lLine) fMatch := nRegex.FindAllStringSubmatch(fLine, -1) lMatch := nRegex.FindAllStringSubmatch(lLine, -1) first := fMatch[0][0] last := lMatch[len(lMatch)-1:][0][0] fmt.Println(first + last) asInt, err := strconv.Atoi(first + last) if err != nil { panic(err) } sum += asInt } fmt.Println(sum) }