package day01 import ( "regexp" "strconv" "strings" ) func Part1(input string) int { total := 0 lines := strings.Split(input, "\r\n") for _, line := range lines { regex := regexp.MustCompile("[a-zA-Z]") numbers := regex.ReplaceAllString(line, "") number := string(numbers[0]) + string(numbers[len(numbers)-1]) i, _ := strconv.Atoi(number) total += i } return total } func Part2(input string) int { values := map[string]string{ "one": "1", "two": "2", "three": "3", "four": "4", "five": "5", "six": "6", "seven": "7", "eight": "8", "nine": "9", } lines := strings.Split(input, "\r\n") s := "" total := 0 for _, line := range lines { numbers := []string{} for _, c := range line { s = s + string(c) if num, err := strconv.Atoi(string(c)); err == nil { numbers = append(numbers, strconv.Itoa(num)) s = "" } for key, value := range values { if strings.Contains(s, key) { numbers = append(numbers, value) buffer := s[len(s)-1] s = "" + string(buffer) } } } number := numbers[0] + numbers[len(numbers)-1] i, _ := strconv.Atoi(number) total += i s = "" } return total }