Refactor parseSpelledDigit to parseDigit and handle both spelled digits and regular digits

This commit is contained in:
Luna 2023-12-18 15:57:19 +01:00
parent 3cfd98c2f5
commit da6a330f7a

View file

@ -1,6 +1,7 @@
package main package main
import ( import (
"errors"
"fmt" "fmt"
"io" "io"
"log" "log"
@ -20,7 +21,7 @@ func readInput() string {
return str return str
} }
func parseSpelledDigit(input string) string { func parseDigit(input string) (string, error) {
digits := map[string]string{ digits := map[string]string{
"one": "1", "one": "1",
"two": "2", "two": "2",
@ -31,21 +32,30 @@ func parseSpelledDigit(input string) string {
"seven": "7", "seven": "7",
"eight": "8", "eight": "8",
"nine": "9", "nine": "9",
"1": "1",
"2": "2",
"3": "3",
"4": "4",
"5": "5",
"6": "6",
"7": "7",
"8": "8",
"9": "9",
} }
i, ok := digits[input] i, ok := digits[input]
if ok == false { if ok == false {
return "-1" return "", errors.New("No spelled digit")
} }
return i return i, nil
} }
func addSDStrings(input1 string, input2 string) string { func addDStrings(input1 string, input2 string) string {
num1 := parseSpelledDigit(input1) num1, err := parseDigit(input1)
if num1 == "-1" { if err != nil {
num1 = input1 num1 = input1
} }
num2 := parseSpelledDigit(input2) num2, err := parseDigit(input2)
if num2 == "-1" { if err != nil {
num2 = input2 num2 = input2
} }
num_str := num1 + num2 num_str := num1 + num2
@ -64,16 +74,10 @@ func main() {
} }
first := matches[0] first := matches[0]
last := matches[matches_len-1] last := matches[matches_len-1]
num_str := first + " " + last num_str := addDStrings(first, last)
num, err := strconv.Atoi(num_str) num, err := strconv.Atoi(num_str)
if err != nil {
num_str = addSDStrings(first, last)
num, err = strconv.Atoi(num_str)
if err != nil { if err != nil {
log.Fatalln(err) log.Fatalln(err)
continue
}
} }
answer = answer + num answer = answer + num
fmt.Println(l, first, last, num) fmt.Println(l, first, last, num)