Problem description.
I had to write some code for AoC 2017 day 22 which matched up with this pretty nicely.