The Game of Life (Not What You Think?)

c7a4o

Let’s start with the animation above.  It was created with a Cellular Automaton; specifically it’s a variation of  The Game of Life.

The rules for the Game of Life are as follows (from Wikipedia):

  1. Any live cell with fewer than two live neighbors dies, as if caused by under-population.
  2. Any live cell with two or three live neighbors lives on to the next generation.
  3. Any live cell with more than three live neighbors dies, as if by overcrowding.
  4. Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction.

So let’s talk about how this game relates to the animation above.

First, at the upper right hand corner of the animation is a glider.  This is a pattern of cells that reproduces and dies in such a fashion that the pattern appears to move diagonally —  hence its name.   Here’s a slower, close-up from Wikipedia:

glider

 The glider makes a useful “fuse”, which is how I used it.

At some point the glider seems to spontaneously “explode” and outline the letters.  Not quite — this is where one of the new states comes in.  There’s an “Amplifier” state that is the same color as the non-live cells, and Amplifiers — as their name implies — amplify growth by the following rule:

If a cell is dead but there is at least one adjacent live cell and one amplifier, then the cell becomes alive.

This means when live cells touch an Amplifier, there is an explosion of growth.  However, cells also die by over-crowding (see the rules above), so death usually follows, but then the Amplifier spurs new growth, which then dies, ad nauseum.   The result is a flurry of activity with the Amplifer sitting in the “eye” of the storm.  Since it’s not affected, it appears as an area of calm amid the activity.

So at the start of the simulation, I arranged Amplifiers to form  “Cellular Automata”.  They remained invisible, but when the glider touched one, the growth explosion caused the letters to show up in “relief”.

After a while, the cells get frozen in a domino effect.  This is due to the the other new state, appropriately called Freeze.  This one’s visible; it’s the blue cell in the lower right hand corner of the animation.  The rule for it is:

If a cell is alive and there is at least one adjacent Freeze cell, then turn into a Freeze Cell.

Naturally once a cell becomes a freeze cell, any cells touching it freeze and so on, thus leading to the domino effect of freezing.

Cellular Automata are all about the states, transition rules and the initial (seed) state.  Once the initial state was set up, I let it run as per its rules, and the result was the animation at the start of this article.

But even without additions, the Game of Life is a fascinating, rich source of entertainment and learning.  Knowing the rules, you can place a cell just so to encourage or discourage growth.  But you can also work at a “higher” level and build larger, sophisticated structures.

For instance, interactions of groups of live cells often eject gliders as a by-product.  Other interactions can bounce back colonies of items.  Well, put the two together and you get a “Gosper Glider Gun” that ejects a continuous stream of gliders (thanks again Wikipedia!):

gosper

Gliders and guns play a big role in implementing logic gates and hence functioning computers in this game.  I won’t go into the details, but essentially the stream of gliders is treated like a stream of electrons with the guns functioning as circuits, with glider collisions (timed just right) forming the actual logical operation.

Ok, enough of my babbling. Play the Game Yourself Already!

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s