Drawing with rules instead of a mouse
What you are looking at
The top row is a single lit cell in a field of dark ones. Every row below it is computed from the row above by one rule, applied to every cell at once: look at a cell and its two neighbours, and decide whether the cell below is lit.
Three cells, two states each, is eight possible neighbourhoods. Each gets a yes or a no, so a rule is eight bits — a number between 0 and 255. That number is the entire program. There is nothing else.
// the whole simulation
next[i] = (rule >> ((left << 2) | (self << 1) | right)) & 1;
Why these four
- Rule 30 produces a stream that passes statistical randomness tests, from a starting condition of one lit cell. Wolfram used it as a random number generator in Mathematica.
- Rule 90 draws the Sierpiński triangle. Nobody put a triangle in the rule.
- Rule 110 is Turing complete. Given the right starting row, it can compute anything computable.
- Rule 150 is the tidy one — symmetric, nested, and completely predictable.
Why this sits next to the prediction work
Same instinct, opposite direction. A forecasting model looks at outcomes and tries to recover the rule that produced them. An automaton hands you the rule and dares you to predict the outcome — and for Rule 30 you cannot, other than by running it. There is no shortcut, no closed form. Simple rules are not the same as predictable ones, which is a useful thing to keep in mind when a model looks too clean.