p1 & p2
This commit is contained in:
@@ -3,30 +3,51 @@ package main
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"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() {
|
||||
|
||||
lines, err := parse()
|
||||
if err != nil {
|
||||
fmt.Println("Error:", err)
|
||||
}
|
||||
oneline := strings.Join(lines, "")
|
||||
|
||||
var p1 int = 0
|
||||
var p2 int = 0
|
||||
|
||||
for _, line := range lines {
|
||||
numbers := strings.Fields(line)
|
||||
report := make([]int, len(numbers))
|
||||
for i, num := range numbers {
|
||||
x, err := strconv.Atoi(num)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
report[i] = x
|
||||
}
|
||||
re := regexp.MustCompile(`mul\(\d+,\d+\)`)
|
||||
matches := re.FindAllString(oneline, -1)
|
||||
for i := 0; i < len(matches); i++ {
|
||||
p1 += calculate(matches[i])
|
||||
}
|
||||
|
||||
onecleanre := regexp.MustCompile(`(?s)don\'t\(\).*?do\(\)|$`)
|
||||
oneclean := onecleanre.ReplaceAllString(oneline, "")
|
||||
|
||||
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)
|
||||
|
||||
Reference in New Issue
Block a user