Files
adventofcode2023/main.go

80 lines
1.3 KiB
Go

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") {
if strings.TrimSpace(line) == "" {
continue
}
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)
}