Here's my solution: <a href="http://pastebin.com/f75a9ee" rel="nofollow">http://pastebin.com/f75a9ee</a><p>Usage: run and click on the window to get next generation<p>I used Jython with a Swing GUI. It took me about 1.5 hours in total half of which was spent getting the GUI right :S (I never used Swing before).<p>The algorithm itself was fairly straightforward. It was buggy and gliders didn't work and I tried fixing the state management in the cells but in the end the bug turned out to be in the update rule of the game of life. I had "cell is alive in the next generation if it has 2 or 3 live neighbors". That should be "a cell is alive if (it is ALIVE and has 2 or 3 neighbors) OR (it is dead and has 3 neighbors)".<p>I don't know if it's correct now, I only tested a glider.<p>Features:<p><pre><code>    - the world is created on the fly
    - dead cells are removed from the world, so gliders run in O(1) space
    - GUI :)</code></pre>