I am posting the following program in direct response to the creationist
claim that mutation is always harmful.
The program reads in a "creature" that plays a game called "prisoners
dillemma". The rules are simple: two players simultaneously choose whether to
be nice or to be mean. If both decide to be nice, they get 3 points each. If
one is nice and the other is mean, the mean one gets 5 points, the nice one
gets none. If both are mean they each get 1 point.
The ecology starts with 100 copies of the original creature. After every
creature in the ecology plays each other the scores are tallied and the lowest
scorers are killed. The high scorers then have children, some of which are
mutations of the parent. Then the number of original creatures is put on the
screen. The program stops when the ancestor creature goes extinct.
Usually the original creature dies out after a few games. All this, of
course, depends on the mutation rate, the strategy used by the ancestor, and
the size of the ecology.
The creature I have included is an attempt to defeat the trap by giving the
ancestor a way to detect mutants. If the first three plays result in Nice,
Mean, Nice then the system knows it is playing a relative and plays nice. If
this "password" is not used, the creature knows it is playing a mutant and
plays mean to keep the opponents score low. Obviously this strategy only works if
there are alot of ancestors around, but there are at the start.
To get these files you have two choices: use the programs eek, kiss, or unc,
which are all uudecode improvements, or use a text editor to split the post
into 3 files and uudecode each file separately. If this causes any problems I will
be happy to email the files separately on request.
To compile the source code type
% cc -O -o pwb pwb.c
It should work on any ANSI-C compiler. And to run it type
% pwb pwb
The file pwb.eco contains the ancestor creature explained above. I will be
happy to explain the creature format if you want to try your own creations for
The command line options are
-r Fill the ecology with random creatures instead of copies of the
-mN Set the mutation rate to 1 in N creatures. If you have alot of time
on your hands try -m10
-tN Run the simulation N times and give an average at the end.
just as a warining, -m8 causes a resonance on our system here. If you get
or 3 cycle patter evolving then the random number generator is running at the
same resonance as the program. The only cure is to ^C out and try with a
different mutation rate.
Oh yeah, like most of my code this is completely uncommented :). If you are
interested how it works I will be happy to explain anything you find confusing
(and I'm sure there is plenty: my programming style is pretty bad)