|
@@ -63,11 +63,15 @@ func processStones(stones map[int]int) map[int]int {
|
|
return newStones
|
|
return newStones
|
|
}
|
|
}
|
|
|
|
|
|
-func part1(stones map[int]int) int {
|
|
|
|
- for i := 0; i < 25; i++ {
|
|
|
|
|
|
+func blink(stones map[int]int, blinks int) map[int]int {
|
|
|
|
+ for i := 0; i < blinks; i++ {
|
|
stones = processStones(stones)
|
|
stones = processStones(stones)
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ return stones
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func countStones(stones map[int]int) int {
|
|
var result int
|
|
var result int
|
|
for _, value := range stones {
|
|
for _, value := range stones {
|
|
result += value
|
|
result += value
|
|
@@ -82,5 +86,8 @@ func main() {
|
|
}
|
|
}
|
|
|
|
|
|
stones := readInput(os.Args[1])
|
|
stones := readInput(os.Args[1])
|
|
- fmt.Println("Part1:", part1(stones))
|
|
|
|
|
|
+ part1Stones := blink(stones, 25)
|
|
|
|
+ fmt.Println("Part1:", countStones(part1Stones))
|
|
|
|
+ part2Stones := blink(part1Stones, 50)
|
|
|
|
+ fmt.Println("Part2:", countStones(part2Stones))
|
|
}
|
|
}
|