|
@@ -110,6 +110,41 @@ func part1(games []Game) int {
|
|
|
return result
|
|
|
}
|
|
|
|
|
|
+func getLimits(sets [][]Cube) Limits {
|
|
|
+ var limits Limits
|
|
|
+ for i := range sets {
|
|
|
+ for j := range sets[i] {
|
|
|
+ switch sets[i][j].color {
|
|
|
+ case "red":
|
|
|
+ if sets[i][j].count > limits.red {
|
|
|
+ limits.red = sets[i][j].count
|
|
|
+ }
|
|
|
+ case "green":
|
|
|
+ if sets[i][j].count > limits.green {
|
|
|
+ limits.green = sets[i][j].count
|
|
|
+ }
|
|
|
+ case "blue":
|
|
|
+ if sets[i][j].count > limits.blue {
|
|
|
+ limits.blue = sets[i][j].count
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return limits
|
|
|
+}
|
|
|
+
|
|
|
+func part2(games []Game) int {
|
|
|
+ var result int
|
|
|
+
|
|
|
+ for i := range games {
|
|
|
+ limits := getLimits(games[i].sets)
|
|
|
+ result += limits.red * limits.green * limits.blue
|
|
|
+ }
|
|
|
+
|
|
|
+ return result
|
|
|
+}
|
|
|
+
|
|
|
func main() {
|
|
|
if len(os.Args) < 2 {
|
|
|
log.Fatal("You need to specify a file!")
|
|
@@ -124,4 +159,5 @@ func main() {
|
|
|
|
|
|
games := readInput(file)
|
|
|
fmt.Println("Part1:", part1(games))
|
|
|
+ fmt.Println("Part2:", part2(games))
|
|
|
}
|