Refactor parseSpelledDigit to parseDigit and handle both spelled digits and regular digits
This commit is contained in:
parent
3cfd98c2f5
commit
da6a330f7a
1 changed files with 20 additions and 16 deletions
|
@ -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)
|
||||||
|
|
Loading…
Add table
Reference in a new issue