Here is the first version. It takes a while to get initialized. When you see the tape recorder controls and the big rectangle of TV snow, press the ">" (play) button.

Your browser does not support Java, so nothing is displayed.

The idea is this: For every 3 x 3 neighborhood, there are 512 possible combinations of black and white. Assign each of the possible combinations a random "energy," say between 0 and 511. This sets up the rules, a sort of imaginary physics for the game.

The board starts in some initial state, and then you flip one square at a time, only making flips that reduce the total energy for the board.

I imagined this would do something like crystalization. Well, not yet, although it is doing something. Some things to try next: rules that are symmetrical, rules that are smoothed so that similar states have similar energies, and doing something more like real annealing.

Source code

Take a look in the src directory. Much of this code (and some of it is irrelevant now) is taken from my LangtonsAnt applet. One new thing I'm proud of is the "WeightMap" which records the relative probabilities of all the potential bit-flips, and then picks one according to the probabilities.