My previous solution needed four linker tiles. I've now found a way to get rid of these. Each tile simply transmits the state of the tile above it to its left and right neighbours.

These tiles implement Rule 30:

- Filled tiles are "on" and empty tiles are "off".

- Downward arrow on the base transmits the state to the cell below.

- Outward sideways arrows transmit state of N neighbour to E and W neighbours.

- Inward pointing arrows receive state of NW neighbour via W neighbour, state of N neighbour, and state of NE neighbour via E neighbour.

Seed tile:

Starting from this seed in the middle of a line of empty squares, the puzzle has a single, infinite solution. The column of tiles below the seed passes tests of randomness used to test pseudo-random number generators. Rule 30 is used as a random number generator in Mathematica. Rule 30 is a simple demonstration of Stephen Wolfram's observation that mathematics is random, and that "creating information" is trivial.

I previously speculated about making these tiles from plastic. Technology to do this is now readily available.

Source code:

Requires Python 2, "shapely" python library. Produces files for OpenSCAD in a directory "output". Usage:

python cell_tiles.py 30

You might also like to try other elementary cellular automata, such as Rule 110 which is a computer.