Skip to content

Commit f2a58ed

Browse files
feat(day02): solve part02
1 parent c7246ed commit f2a58ed

File tree

1 file changed

+31
-3
lines changed

1 file changed

+31
-3
lines changed

Diff for: 2023-go/day02/day02.go

+31-3
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,14 @@ import (
99

1010
func main() {
1111
lines := common.ReadAllLines("../2023-go/day02/input.txt")
12+
games := readGames(lines)
1213
log.Println("Day 02 Part 01")
13-
partOne(lines)
14+
partOne(games)
1415
log.Println("Day 02 Part 02")
16+
partTwo(games)
1517
}
1618

17-
func partOne(lines []string) {
18-
games := readGames(lines)
19+
func partOne(games []game) {
1920
possibleGames := countPossibleGames(games)
2021
log.Println(possibleGames)
2122
}
@@ -39,6 +40,33 @@ func isGamePossible(game game) bool {
3940
return true
4041
}
4142

43+
func partTwo(games []game) {
44+
var sum int
45+
for _, game := range games {
46+
sub := findMinimumSubset(game)
47+
sum += sub.red * sub.green * sub.blue
48+
}
49+
log.Println(sum)
50+
}
51+
52+
func findMinimumSubset(game game) subset {
53+
minimumSubset := subset{red: 0, green: 0, blue: 0} // start low to find the minimum
54+
for _, subset := range game.subsets {
55+
if subset.green > minimumSubset.green {
56+
minimumSubset.green = subset.green
57+
}
58+
if subset.red > minimumSubset.red {
59+
minimumSubset.red = subset.red
60+
}
61+
if subset.blue > minimumSubset.blue {
62+
minimumSubset.blue = subset.blue
63+
}
64+
}
65+
return minimumSubset
66+
}
67+
68+
// ------- Helper functions to parse the input lines into structs of games and subsets -------
69+
4270
type game struct {
4371
id int
4472
subsets []subset

0 commit comments

Comments
 (0)