github.com/agrigoryan/aoc_2023_go@v0.0.0-20231216221323-4ace361ec685/day2/d2p2.go (about) 1 package day2 2 3 import ( 4 "fmt" 5 "log" 6 "strconv" 7 "strings" 8 ) 9 10 func d2p2(input string) int { 11 lines := strings.Split(input, "\n") 12 sum := 0 13 for _, line := range lines { 14 parts := strings.Split(line, ":") 15 plays := strings.Split(parts[1], ";") 16 requiredCubes := map[string]int{ 17 "red": 0, 18 "green": 0, 19 "blue": 0, 20 } 21 for _, play := range plays { 22 balls := strings.Split(play, ",") 23 for _, ball := range balls { 24 ballParts := strings.Split(strings.TrimSpace(ball), " ") 25 numBalls, err := strconv.Atoi(ballParts[0]) 26 if err != nil { 27 log.Fatalf("error parsing ball count for %v", ball) 28 } 29 color := ballParts[1] 30 if requiredCubes[color] < numBalls { 31 requiredCubes[color] = numBalls 32 } 33 } 34 } 35 sum += requiredCubes["red"] * requiredCubes["blue"] * requiredCubes["green"] 36 } 37 fmt.Println(sum) 38 return sum 39 }