Best Abuse of the C Preprocessor: David Gibson University of Cape Town 1 Sweet Valley Road Bergvliet 7945 South Africa Judges' comments: To use: sh ./dgibson.sh [datafile] where: datafile initial pattern (default: dgibson.data1) 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: dgibson.data1 dgibson.data2 dgibson.data3 dgibson.data4 dgibson.data5 For dgibson.data5 you will need a large screen, lots of virtual memory and lots of time! Good luck trying to use a debugger on this entry! Life is not always pretty. Selected notes from the author: 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 on main in two "directions" simultaneously. Copyright (c) 1993, Landon Curt Noll & Larry Bassel. All Rights Reserved. Permission for personal, educational or non-profit use is granted provided this this copyright and notice are included in its entirety and remains unaltered. All other uses must receive prior permission in writing from both Landon Curt Noll and Larry Bassel.