Game of Life is in one hand a very simple set of rules, on the other contains some of the worst caveats of advanced programming, related to scalability. While the results are deterministic, there is the challenge of infinite playfield and infinite number of cells to process.
If the challenge specs include minimum performance and maximum memory footprint, then the tests include rapidly growing patterns, or patterns that travel in various directions far and wide, this may become a very frustrating challenge.
You got the known input and known output after X iterations, and you know all the steps to get there... except the steps take too much and too long. You must perform some pretty extreme optimizations to fit within specs. The trivial algorithm with scanning a fixed size double-buffered 2d array of bits becomes totally inadequate as its performance degrades with O(n^2) of the size. Treating filled blocks as new spawned objects suddenly eats up tons of memory and gets slow. Separating everything into limited size boards works sometimes, fails sometimes...
And since most of "global" tests will fail the performance standard, you need to develop smaller goals, smaller sub-tests that get the caveats ironed out...