Unfortunately, your browser does not support Java.
A Java applet is the central focus of this page.
You're encouraged to try again using a Java-aware browser.

A version of this applet using Sun's Java plug-in is available here.
The "Revoworms" applet shows self-reproducing worms in a reversible cellular automata.

By default absorbing walls are placed around the edges of the automaton. With the walls in place exact reversibility is lost once some worms crawl off the edges.

If the absorbing walls are removed, the simulation is exactly reversible - but it is liable to get rapidly clogged up with worm debris.

Note that some of this debris forms because I have not got the best rule. However the rule is good enough to demonstrate self-reproduction.

Revoworms was insipred by [the work of Keuichi Morita and Katsunobu Imai]. I attempted to design a simple self-reproducing automata, following the first point of their "Concluding Remarks".

It uses 729 states per cell. This contrasts to the Morita/Imai - which uses 32768 states per cell.

Primarily in order to keep down the number of states per cell down, Revoworms uses a strange neighbourhood called Doubled Central Triumphant neighbourhood.

I hope to publish the either the rule or the source code at some stage. If you're keen to get hold of this, you could always try mailing me. Of the 729 states, 27 are in the central region of each cell and 3 are in each surrounding neighbourhood. 3x3x3x27 = 729. The 27 states are conceptually broken down into 3 groups of 3 states - each group associated with a direction.

The worms may be likened to caterpillar tracks. The bottom surface rests on the ground. The top surface travels forwards towards the head of the worm. As it moves the upper surface rolls down onto the ground at the front of the worm, and the bottom surface at the end of the worm lifts up.

Each group of three states represents one of <empty>, <straight> or <split>. These instructions govern the worm's behaviour when they are on the bottom surface of the worm. When they are on the top surface they just travel forwards passively along the worm.

The details of the rule are still quite complex. I used an elaborate program to discover it - and I still don't have it working as well as is possible.

That's about it.

Interactive controls

  • Initial configuration - controls how the automata starts up;
  • Tool selection - controls which type of tool to use to manipulate the environment;
  • Resolution - controls how many cells are displayed, and their size;
  • Reverse - runs the automaton in reverse;
  • Edges - places absorbing boundaries around the edges of the grid;
  • Restart - restarts the automata with the current initial configuration;
  • Clear - completely clears the grid - including any walls that may be present;
  • Step - allows a paused automata to be single-stepped;
  • Pause - allows the automata to be stopped and started;
Revoworms can also be run as an application. Download this jar file (using shift-click) and double-click on it.

Index | HAL | HexHAL | EoSex | CA | Links |