CMU Artificial Intelligence Repository
Home INFO Search FAQs Repository Root

Implementations of Conway's Game of Life


   aaalife/   AAALife: Fast implementation of Conway's Game of 
              Life for PCs.
   dionne/    Life in VMS Fortran for VT100 terminals.
   dr_life/   DR Life: Implementation of Conway's Game of Life 
              for PCs.
   hatch/     Implementation of Conway's Game of Life for Sun.
   hensel/    PCLIFE: Implementation of Conway's Game of Life 
              for the PC.
   life_3d/   Life3D: Three-dimensional implementation of Life 
              for the Amiga.
   lifepas/   Conway's Game of Life in Pascal for the PC.
   moraes/    Xlife: X-Windows Implementation of Conway's Game 
              of Life
   olsson/    Conway's Game of Life for the IBM PC
   reilly/    Conway's Game of Life for Windows 3.0.
   rokicki/   Conway's Game of Life for the Amiga
   rupley/    Conway's Game of Life for VT100 using 
   xlife/     XLIFE: Conway's Game of Life for X Windows

   (Only some of the files come from the above site.)
This directory contains a large collection of implementations of Conway's Game of Life for Unix, IBM PC, Amiga, and other systems. Cellular Automata, of which Life is an example, were suggested by Stanislaw Ulam in the 1940s, and first formalized by von Neumann. Conway's "Game of Life" was popularized in Martin Gardner's mathematical games column in the October 1970 and February 1971 issues of Scientific American. (Shorter notes on life are also given in the column in each month from October 1970 to April 1971, and well as November 1971, January 1972, and December 1972.) There's also quite a bit on the game in "The Recursive Universe", by William Poundstone, Oxford University Press, 1987, 252 pages. The rules for the game of life are quite simple. The game board is a rectangular cell array, with each cell either empty or filled. At each tick of the clock, we generate the next generation by the following rules: if a cell is empty, fill it if 3 of its neighbors are filled (otherwise leave it empty) if a cell is filled, it dies of loneliness if it has 1 or fewer neighbors continues to live if it has 2 or 3 neighbors dies of overcrowding if it has more than 3 neighbors Neighbors include the cells on the diagonals. Some implementations use a torus-based array (edges joined top-to-bottom and left-to-right) for computing neighbors. For example, a row of 3 filled cells will become a column of 3 filled cells in the next generation. The R pentomino is an interesting pattern: xx xx x Try it with other patterns of 5 cells initially occupied. If you record the ages of cells, and map the ages to colors, you can get a variety of beautiful images. When implementing Life, be sure to maintain separate arrays for the old and new generation. Updating the array in place will not work correctly. Another optimization to to maintain a list of the cells that changed. Conway has demonstrated that it is possible to construct the basic building blocks of a computer from Life using modified glider guns. See the last chapter of Elwyn R. Berlekamp, John H. Conway, and Richard K. Guy, "Winning Ways", Academic Press, New York, 1982, ISBN 0-120911-507. for details. Some interesting patterns to use include: * * * ** * * ** * ** * * * * ** *** * * **** * **** *** *** * * * ** * Clock Glider Block Spaceship * * * * **** * Traffic Light Cheshire Cat
CD-ROM: Prime Time Freeware for AI, Issue 1-1 Keywords: Artificial Life, Conway's Game of Life, Life!Implementations
Last Web update on Mon Feb 13 10:20:03 1995