Rule Thirty Cascade
One row of cells. One byte of rule. The row underneath is worked out three cells at a glance, and then the row under that, and nothing else ever happens. Start it from a single live cell and it does not settle, does not tile and does not fall into a pattern anyone has been able to write down.
About this piece
An elementary cellular automaton is the smallest interesting computer there is. You get one row of cells, each either alive or dead. To work out the next row you look at every cell together with its two neighbours — three bits, so eight possible neighbourhoods — and read off what that neighbourhood turns into. Eight answers of one bit each is one byte, and that byte is the program. There are 256 of them, and Wolfram numbered them.
This plate runs number 30, which in binary is 00011110:
- 111 → 0 110 → 0 101 → 0 100 → 1
- 011 → 1 010 → 1 001 → 1 000 → 0
Which is the single line new = left XOR (self OR right). That is the whole artwork. There is no image stored anywhere, no noise function, no parameters to tune and nothing that knows what a triangle is: start from one live cell in an otherwise empty row and everything on the plate above follows by arithmetic.
The vertical axis is time, and that is what makes this plate unlike the rest of the gallery
Four other plates here are grids that update in place — Sandpile Avalanche, Turing Bloom, Wave Collapse, Truchet Tiles. In every one of them both axes of the picture are space, the whole field is repainted each step, and what you are looking at is the current state of something.
Here the automaton is one-dimensional: the state is a single row, a few hundred bits wide. The plate is not that state — it is that state's history. Row n+1 is drawn directly beneath row n and then never touched again, so downward is forward in time. The picture drifts upward because time moves, not because anything in it is moving. It is closer to a seismograph roll than to a simulation, and the only other plate in this gallery whose motion is a paper feed rather than an animation is Bitcoin Matrix, which is a decorative rain with no state at all.
One flank bands, the other shreds
Look at the triangle's two sides. The left one falls in clean diagonal bands. The right one disintegrates within a few cells of the edge. That asymmetry is not the seed — the seed is a single symmetric cell — it is the rule: left XOR (self OR right) does not read its two neighbours the same way, so it cannot produce a symmetric picture.
Measured on a single-seed cascade 400 generations deep, taking the diagonal that runs d cells in from each edge and asking for the smallest period that fits it over generations 50–400:
- Left flank — at d = 1…20 the period is always 1, 2 or 4. Twenty cells in, it is still a stripe.
- Right flank — the period doubles as you go in: 2, 2, 4, 8, 8, 16, 32, 32 at d = 1…8, and from d = 10 inward there is no period of 32 or less at all.
The centre column — the single cell directly under the seed, generation after generation — is the famous part. Wolfram Research used exactly that column as the random-number generator inside Mathematica; it passes the standard statistical tests for randomness while being produced by seven characters of arithmetic from one bit of input. In 2019 Wolfram announced a prize for three questions about it, and the first is simply does it ever become periodic? That is still open.
Colour is the rule, not a coat of paint
Only four of the eight neighbourhoods produce a live cell: 001, 010, 011 and 100. Every live cell on this plate is drawn in the ink belonging to the neighbourhood that made it, so the colouring is a readout of the rule rather than a decoration laid over it.
That turns out to fit this site exactly. Counted over 2,000 generations of a 201-cell ring, the four fire at 25.1%, 24.8%, 25.1% and 25.1% of live cells — a flat quarter each, to within a third of a percentage point — and 48.8% of all cells are alive. The palette here has four ink slots weighted three cobalt to one coral, because that 3:1 reading is the site's identity. So the map is: 001, 011 and 100 take the three cobalts, 010 takes the coral. The plate lands on the house weighting by the automaton's own arithmetic, with no dice rolled and no share to tune.
And 010 is the isolated survivor — a cell whose left and right neighbours were both dead in the row above. So every warm mark you can see is a cell that was born alone. Two of them can never be side by side, either: that would need one cell to have been both alive and dead in the previous row. Over those same 2,000 generations, adjacent coral pairs: zero, as the rule requires.
Reading the plate: what to watch for
- Triangular holes at every size. Runs of dead cells nest inside larger runs of dead cells, all the way down to one cell. That self-similar spray of voids is the closest rule 30 gets to a fractal, and it is not a Sierpiński gasket: rule 90 gives you the exact gasket, and rule 30 gives you a gasket with the regularity beaten out of it.
- Coral never touches coral, sideways. Proved above and checked over 2,000 generations. A vertical run of coral, on the other hand, is ordinary: it means a cell stayed isolated for several generations in a row.
- A hard horizontal edge with one coral dot under it. That is a re-seed — the row is wiped back to a single live cell and a new cascade starts. It happens every two screen-heights, and below the break you can watch the whole picture unpack from that one cell in real time. Clicking the animation does it on demand.
- The left bands survive the collision. When the triangle grows wider than the plate the two flanks meet, because the row is a ring. The banded flank keeps its stripes through the meeting; the chaotic one does not have anything to lose.
How it is drawn
Cells are 9 CSS pixels on a laptop-sized window, drawn as an 8×8 mark with one pixel of paper around it — the gap is what makes the field read as cells rather than as solid black regions. On a 1280×720 stage that is a grid of 142 columns by 80 rows; on a 390‑px phone, where the stage is 353×265, it is 5‑px cells and 70 by 53. The size is picked from the shorter side, so a phone gets the same picture at the same relative scale rather than a crop of the laptop one.
A generation lands every 110 ms of wall clock — about 9 rows a second, 82 CSS px/s of drift — not once per frame. A generation is a whole cell-height jump with nothing to interpolate in between, so a frame that falls inside the interval costs one comparison and returns without drawing. At one row per frame the cascade would fall at roughly 540 px/s and read as a blur.
The plate keeps a whole screen of history in the pixels, not in an array: each generation the canvas is blitted onto itself shifted up by exactly one cell height. An integer offset makes that a straight pixel copy with no resampling, so nothing softens however long it runs, and the drawing cost per generation is about 70 rectangles instead of the ~5,500 a full redraw of the stored history would need. Those rectangles go down in four passes, one fillStyle per ink, rather than one string per cell.
Under prefers-reduced-motion no animation loop is scheduled at all. The field is built full — every row from the seed down to the bottom of the frame — so a visitor who asked for stillness is handed the complete cascade rather than one dot at the top of an empty plate. It is also the first thing everyone else sees, before the first row scrolls.
Not one colour is named in the drawing code. The background, the four ink triplets and their four alphas are handed in by the caller from the shared palette, which is why the gallery tile, this page and a copy of the embed sitting on someone else's blog are the same artwork and follow the same light and dark settings.
Honest limits
It is exactly the same picture every time. There is no Math.random() and no hash anywhere in this plate. The seed is always one cell in the middle of the row, and the rule is deterministic, so two people with the same window width see the same cascade cell for cell, and so will you tomorrow. Most plates in this gallery re-roll; this one cannot, and that is the honest cost of the thing it is demonstrating — the output looks random and is not.
"Never repeats" is a claim about the infinite line, not about this canvas. The row here is a ring of a few hundred cells, so it has at most 2142 states on a wide window and must therefore cycle eventually. That bound is far past any reachable running time, and the plate re-seeds every 160 generations regardless — but the open question about aperiodicity is about the unbounded automaton, and what you are watching is a finite model of it.
The ring is a compromise. The textbook picture of rule 30 is an unbounded row, where the triangle just keeps growing. Here it hits the sides in about 71 generations and wraps into itself. A hard edge instead would either reflect the cascade or clip it, and both are visible as a seam running down the side of the plate; a ring has no seam, but the region after the collision is no longer a picture of a single expanding cone.
Rule 30 is not the clever one. Rule 110, its neighbour in the same 256, was proved Turing-complete by Matthew Cook — you can build a computer out of it. Rule 30 has no such result; what it has is the best-looking output in the family and a genuinely hard open problem attached to its centre column. This plate draws 30 because 30 makes the better picture.
Small screens lose the fine structure. At 390 px the grid is 70 by 53 with 5‑pixel cells. The banded flank and the big voids survive; the one- and two-cell triangles read as specks, and the texture is closer to noise than it is on a laptop. That is a limit of how many cells fit, not of how they are drawn — a cell is already 5 px, and shrinking it further would put the whole grid below the size an eye can separate.
One rule, one seed, one composition. The family has 255 other members and the seed could be any row of bits. Feeding the plate a random starting row, or rule 110, or rule 90's exact Sierpiński gasket, would all be one constant away — and none of it is exposed, because this gallery ships finished compositions rather than controls. What you get here is one of them.
Curious how the loop and canvas fit together? Read how it works →
More from the gallery
- Plate 29 Substrate Cracks Straight cracks that spawn cracks at right angles and stop dead on each other.
- Plate 30 Double Pendulum Two dozen double pendulums let go a hair apart, falling out of step into chaos.
- Plate 31 Game of Life Two rules on a soup of cells: births in coral, survivors in cobalt, the dead as fading ghosts.
- Plate 32 Three-Body Problem Three suns chasing round a figure eight, then a Pythagorean dance that throws one out.
- Plate 01 Quantum Fibonacci Golden-angle phyllotaxis blooming from the seed outward.
- Plate 02 Bitcoin Matrix A quiet rain of ₿ and hex sliding down the glass.