AdventOfCode/2020/elixir/day17/README

45 lines
1.5 KiB
Plaintext

Day 17 Notes
+--------+
| Part 1 |
+--------+
$ elixir day17part1.exs
362
Thoughts:
The answer is not pretty, but it works.
Rather than iterate through the entire coordinate plane, which would require keeping track of where
the current extremities are, I decided to only keep the set of active cubes around. Then for each
iteration, check all the active cube's neighbours.
In addition to counting the neighbours for the active cube, keep track of the inactive neighbours,
then check *their* neighbours too to see if they should become active.
+--------+
| Part 2 |
+--------+
$ elixir day17part2.exs
1980
Thoughts:
In Part 1 I was half expecting a high iteration count for part 2, hence why I avoided iterating the
entire plane. Instead, adding a 4th dimension was a two-line change :-)
+------------------+
| Overall Thoughts |
+------------------+
Nice to have a quick Part 2 solve after day 18 which took me ages. I probably dug myself into
a hole on day 18 though and should have took a step back and tried with a clearer mind.
I spent quite a while getting distracted by the examples, because they present a sliding plane.
Turns out I had actually written the correct implementation, I just struggled to translate my
coordinates to the graphical examples. Running the script produced the correct answer though, but
I cross-referenced it with one of the confusing examples, just in case it wasn't pure luck. I'm
glad I was able to solve Part 2 without reading all the dreaded 4D examples there too!