This commit is contained in:
2024-12-03 18:36:43 +02:00
parent 0c1fc940b3
commit c27b981663

View File

@@ -3,30 +3,51 @@ package main
import ( import (
"fmt" "fmt"
"os" "os"
"regexp"
"strconv" "strconv"
"strings" "strings"
) )
func calculate(x string) int {
clean1 := strings.Replace(x, "mul(", "", -1)
clean2 := strings.Replace(clean1, ")", "", -1)
splat := strings.Split(clean2, ",")
l, err := strconv.Atoi(splat[0])
if err != nil {
}
r, err := strconv.Atoi(splat[1])
if err != nil {
}
return l * r
}
func main() { func main() {
lines, err := parse() lines, err := parse()
if err != nil { if err != nil {
fmt.Println("Error:", err) fmt.Println("Error:", err)
} }
oneline := strings.Join(lines, "")
var p1 int = 0 var p1 int = 0
var p2 int = 0 var p2 int = 0
for _, line := range lines { re := regexp.MustCompile(`mul\(\d+,\d+\)`)
numbers := strings.Fields(line) matches := re.FindAllString(oneline, -1)
report := make([]int, len(numbers)) for i := 0; i < len(matches); i++ {
for i, num := range numbers { p1 += calculate(matches[i])
x, err := strconv.Atoi(num) }
if err != nil {
panic(err) onecleanre := regexp.MustCompile(`(?s)don\'t\(\).*?do\(\)|$`)
} oneclean := onecleanre.ReplaceAllString(oneline, "")
report[i] = x
} re2 := regexp.MustCompile(`mul\(\d+,\d+\)`)
matches2 := re2.FindAllString(oneclean, -1)
for i := 0; i < len(matches2); i++ {
p2 += calculate(matches2[i])
} }
fmt.Println("p1: ", p1) fmt.Println("p1: ", p1)