p1 & p2
This commit is contained in:
@@ -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)
|
|
||||||
}
|
|
||||||
report[i] = x
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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)
|
fmt.Println("p1: ", p1)
|
||||||
|
|||||||
Reference in New Issue
Block a user