Author:
- Name: David Gibson
Location: ZA - Republic of South Africa (South Africa)
To build:
make all
To use:
./dgibson.sh [datafile]
where:
datafile
is the initial pattern (default is the
dgibson.data1 file).
Try:
./try.sh
Judges’ remarks:
We have provided the shell script dgibson.sh to make it easier to run this entry. Run this shell script several times to see what happens.
There are a number of data files available:
For dgibson.data5 you will need a large screen, lots of virtual memory and lots of time! The try.sh script will run dgibson.sh on all the data files.
Good luck trying to use a debugger on this entry! Life is not always pretty.
Author’s remarks:
This program plays the Game of Life.
Life is a cellular automaton invented by J. H. Conway, in which each of a rectangular grid of cells can be alive or dead, and cells with more than 3 or less than 2 (out of 8) live neighbours die, and empty cells with exactly 3 neighbours give birth.
Some notes
- the “STAT n” information does not have to be present in the initial configuration
- the initial configuration should not have live cells around the edges
- the grid should be a perfect rectangle.
Further features: the current generation number is preserved, and the grid automatically resizes itself as the object gets too big or too small.
When writing this program, my goal was to make each cell in the life
grid expand to the code which calculates the fate of that cell. In
addition, the resulting program is a single expression, which makes it
necessary to recurse main()
in two “directions” simultaneously.
Inventory for 1993/dgibson
Primary files
- dgibson.c - entry source code
- Makefile - entry Makefile
- dgibson.orig.c - original source code
- dgibson.sh - script to run entry
- try.sh - script to try entry
- dgibson.data1 - Game of Life cell layout
- dgibson.data2 - Game of Life cell layout
- dgibson.data3 - Game of Life cell layout
- dgibson.data4 - Game of life cell layout
- dgibson.data5 - Game of life cell layout
Secondary files
- 1993_dgibson.tar.bz2 - download entry tarball
- README.md - markdown source for this web page
- .entry.json - entry summary and manifest in JSON
- .gitignore - list of files that should not be committed under git
- .path - directory path from top level directory
- index.html - this web page