57 lines
1013 B
Go
57 lines
1013 B
Go
package day01
|
|
|
|
import (
|
|
"strconv"
|
|
"strings"
|
|
"unicode"
|
|
|
|
utils "git.anthonygueguen.fr/g3po/aoc2023/internal"
|
|
)
|
|
|
|
var wordNum = map[string]string{
|
|
"one": "o1e",
|
|
"two": "t2o",
|
|
"three": "t3e",
|
|
"four": "f4r",
|
|
"five": "f5e",
|
|
"six": "s6x",
|
|
"seven": "s7n",
|
|
"eight": "e8t",
|
|
"nine": "n9e",
|
|
}
|
|
|
|
func GetDigits(content []string) []int {
|
|
var digits []int
|
|
for _, line := range content {
|
|
d_str := ""
|
|
for _, c := range line {
|
|
if unicode.IsDigit(c) {
|
|
d_str = d_str + string(c)
|
|
break
|
|
}
|
|
}
|
|
for i := len(line) - 1; i >= 0; i-- {
|
|
if unicode.IsDigit(rune(line[i])) {
|
|
d_str = d_str + string(line[i])
|
|
break
|
|
}
|
|
}
|
|
utils.Must[int](strconv.Atoi(d_str))
|
|
digits = append(digits, utils.Must[int](strconv.Atoi(d_str)))
|
|
}
|
|
|
|
return digits
|
|
}
|
|
|
|
func WordToNum(content []string) []string {
|
|
var rContent []string
|
|
for _, line := range content {
|
|
str := line
|
|
for k, v := range wordNum {
|
|
str = strings.ReplaceAll(str, k, v)
|
|
}
|
|
rContent = append(rContent, str)
|
|
}
|
|
return rContent
|
|
}
|