diff --git a/02/main.go b/02/main.go index dab041c..5eb8adf 100644 --- a/02/main.go +++ b/02/main.go @@ -13,7 +13,7 @@ import ( var ( inputFile = flag.String("input", "input.txt", "input filename") subsetRegex = regexp.MustCompile(`(?mi)(\d+)+\s(\w+)([,;]?)`) - startRegex = regexp.MustCompile(`(?mi)Game\s(\d+):`) + idRegex = regexp.MustCompile(`(?mi)Game\s(\d+):`) ) const ( @@ -32,14 +32,15 @@ func main() { panic(err) } - var sum, powSum int + var sum int + var powSum float64 for _, line := range strings.Split(string(input), "\n") { if strings.TrimSpace(line) == "" { continue } // find id - idMatch := startRegex.FindAllStringSubmatch(line, -1) + idMatch := idRegex.FindAllStringSubmatch(line, -1) id, err := strconv.Atoi(idMatch[0][1]) if err != nil { panic(err) @@ -48,12 +49,12 @@ func main() { // find sets of digit + color + separator (e.g. "3 blue,") subsets := subsetRegex.FindAllStringSubmatch(line, -1) - var red, green, blue int - var minRed, minGreen, minBlue int + var red, green, blue float64 + var minRed, minGreen, minBlue float64 possible := true for _, subset := range subsets { - cubeAmount, err := strconv.Atoi(subset[1]) + cubeAmount, err := strconv.ParseFloat(subset[1], 64) if err != nil { panic(err) } @@ -73,9 +74,9 @@ func main() { if red > MaxRed || green > MaxGreen || blue > MaxBlue { possible = false } - minBlue = int(math.Max(float64(minBlue), float64(blue))) - minRed = int(math.Max(float64(minRed), float64(red))) - minGreen = int(math.Max(float64(minGreen), float64(green))) + minBlue = math.Max(minBlue, blue) + minRed = math.Max(minRed, red) + minGreen = math.Max(minGreen, green) red = 0 blue = 0 green = 0 @@ -91,5 +92,5 @@ func main() { } fmt.Printf("Sum of IDs: %d\n", sum) - fmt.Printf("Sum of the power of sets: %d", powSum) + fmt.Printf("Sum of the power of sets: %d", int(powSum)) }