This can be thought of as one of the slowest ever implementations of a cellular automata (CA), in this case, "Critters" a reversible block cellular automaton discovered by Tommaso Toffoli and Norman Margolus. See https://en.wikipedia.org/wiki/Critters_(cellular_automaton) for a detailed description.
Like Conway's Game of Life, Critters supports small moving objects similar to gliders. Unlike Life, it is reversible, and thus it serves as a model of reversible computation. It is harder to define universal machines in this framework, but it is possible. Critters conserves the number of live cells, so you cannot do it starting with a finite pattern, but this can be overcome by starting with simple repeating backgrounds such as glider streams entering from infinity.
A block CA works by applying a transition function to the values in disjoint windows in each generation (so reversible mappings are possible) but alternating the diagonal position of the window for odd and even generations (so information can propagate on the grid). For more information, please read the wikipedia page linked above.
There are 16 possible assignments of 0s and 1s to a 2x2 window, but only 6 up to symmetry. Thus, the rules can be summarized as a set of 6 tiles as defined here. I have included a picture of the underside and top of each tile.
Because tiles must alternate, each has a bump in the middle that fits between the clipped corners. A tile should not be forced directly on top of another. The small symbols on the top of each tile bump indicate the shape of the hole below. The base layer is optional but fits every piece and holds them together while building.
Finally, I included an image to illustrate how the tiles can be assembled into four generations of a Critter glider. Because the rules invert the bits at each step, the meaning of "vacuum" alternates between odd and even steps. Hopefully the picture is enough to make it clear (at least once you have a general understand of block CAs). This is based on photos, but I have altered it to correct the perspective, and highlighted the live cells at each step.
So what good is such an implementation of something than can be done at least a million times faster on a computer? Well, I was initially curious if it was possible to do at all. It might also have some implications for nanotechnology. What if instead of tiles, these were molecules? Would they form spontaneous quasi-crystals?
But there is value in doing something very slowly if you want to understand it. I think these tiles may also be useful for building intuition about block CAs.
base_layer.stl | 940.4KB | |
Margolus_Critters.stl | 940.8KB |