Dec 142017
Conway's LIFE simulation in TP 5.5 with graphics and population chart.
File LIFEPLOT.ZIP from The Programmer’s Corner in
Category Pascal Source Code
Conway’s LIFE simulation in TP 5.5 with graphics and population chart.
File Name File Size Zip Size Zip Type
LIFEPLOT.DOC 4128 1829 deflated
LIFEPLOT.PAS 12573 3709 deflated

Download File LIFEPLOT.ZIP Here

Contents of the LIFEPLOT.DOC file


Karl Gudmunds 2/1990

The life simulation by John Conway has produced many cover versions, and
here's mine. Organisms are displayed as dots on a grid, and whether they are
alive the next generation depends on the number of neighbors they have in the
current generation. A neighbor is an organism in an adjacent row or column.
Here, the o's are x's neighbors :


The most neighbors x can have is, therefore, eight. If x has 3 surviving
neighbors, x is born, or stays alive if already so. If x has 2 neighbors,
x stays the same (alive or dead). However, if x has any other number of
neighbors, it dies of either overcrowding or loneliness. These birth/survival/
death rules are applied to each organism on the grid over many generations.

My version of this simulation also plots a chart showing the population change
from one generation to the next. It requires an EGA or VGA and color monitor.
If you would like the Turbo Pascal 5.5 source code, leave me a note on the
FidoNet programmers' echo.

I hope the options on the screen make sense. Here's a summary:

A = replays the last simulation by starting with the same layout.
R = restarts the simulation with the same number of initial organisms.
I = restarts with a new (random) number of organisms.
S = changes the grid size. (10x10 to 60x60 in 10s; bigger is slower).
P = pause. Any key to continue.
Esc = quit.

Enter a number on the command line to set an initial population.

So what's so fascinating? Just watching the buggers jump around is fun, and
imagining them as bacteria, plants, animals, people, nations, etc. makes it
interesting how a simple simulation can seem lifelike and produce complex
results. Some patterns will remain fixed, some will bounce between two states,
some will migrate, some will join and grow, and others will meet and mutually

However, there's more, and it's the main reason I made a population chart to
go with the grid:

The changes between generations are not random. They are quite determined
by the pattern in the current generation. That is, if there are 100 organisms
in a certain pattern, the simulation will be exactly the same every time it is
started with this pattern. However, if even 1 organism is different, then the
simulation will be different.

The population chart is an easy way to see this emergent pattern. If you use
the 'A' key to restart an initial grid layout, the same generational changes
will occur again. This demonstrates the deterministic (non-random) behavior.
In this version you cannot layout the initial pattern, but you can press 'R'
to reset the grid with the same number of initial organisms in a new pattern.
Though the number of organisms will be the same, the generational changes will

This dependence on initial conditions combined with determinism means the life
simulation is chaotic. It's pattern seems random, but it is only hard to
predict. What's the point? Maybe real-life patterns which seem random are also
dictated by simple rules. Or, maybe even if we know the rules governing a real-
life system we won't be able to predict it's behavior (except in the broadest
sense) because we cannot know its exact current state. Such is chaos.

Other life rules about birth, survival, and death (e.g. how many neighbors it
takes to be born) produce sustained chaotic charts, but the classic rules used
here are the most entertaining to watch on the grid. Eventually, the
population will settle to a fixed number (including 0) or oscillate in a small
cycle. Larger grid sizes often allow longer population fluctuations. Play
with the option keys to generate long-lived and interesting populations.

Feel free to distribute unaltered copies of the program, along with this

KNG 2/1990

 December 14, 2017  Add comments

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>