{
    "componentChunkName": "component---src-templates-post-page-js",
    "path": "/blog/post/wolfram-s-elementary-cellular-automata/",
    "result": {"data":{"mdx":{"body":"var _excluded = [\"components\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\n/* @jsxRuntime classic */\n/* @jsx mdx */\n\nvar _frontmatter = {\n  \"title\": \"Wolfram's Elementary Cellular Automata\",\n  \"headline\": \"256 rules, one dimension, and the accidental birth of randomness\",\n  \"description\": \"Inside Stephen Wolfram's elementary cellular automata — the one-dimensional rule sets that generate fractals, randomness, and universal computation.\",\n  \"published_at\": \"2026-07-21T22:29:34.573Z\",\n  \"cover_image\": \"/images/wolfram-s-elementary-cellular-automata.jpg\",\n  \"status\": \"published\",\n  \"tags\": [\"cellular-automata\", \"wolfram\", \"emergence\", \"computation\", \"complexity\"]\n};\nvar makeShortcode = function makeShortcode(name) {\n  return function MDXDefaultShortcode(props) {\n    console.warn(\"Component \" + name + \" was not imported, exported, or provided by MDXProvider as global scope\");\n    return mdx(\"div\", props);\n  };\n};\nvar Callout = makeShortcode(\"Callout\");\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"Strip a complex system down as far as it will go, and what is left? Computer scientist Stephen Wolfram asked exactly that question, and the answer he found is almost embarrassingly small: a single row of cells, each either on or off, updating according to nothing more than its two immediate neighbors. There are only 256 possible ways to define such a system. You could, in principle, sit down for an afternoon and look at every single one. Wolfram did exactly that \\u2014 and discovered that a handful of these minimal machines produce results so intricate that mathematicians are still arguing about what they mean for the nature of computation itself.\"), mdx(\"h2\", null, \"The simplest possible complex system\"), mdx(\"p\", null, \"An elementary cellular automaton lives on a one-dimensional grid: a row of cells, each holding a state of 0 or 1. Every cell's neighborhood is just as minimal \\u2014 itself, plus the cell to its left and the cell to its right, three cells in total. Since each of those three cells can be either 0 or 1, there are exactly eight possible neighborhood configurations. And because a rule set just needs to specify an outcome \\u2014 0 or 1 \\u2014 for each of those eight configurations, there are 2\\u2078, or 256, possible rule sets in total. Every one of them has a name: Rule 30, Rule 90, Rule 110, and so on, named after the decimal value of the eight-digit binary number that encodes its behavior.\"), mdx(\"p\", null, \"To see the pattern a rule produces, you stack every generation as a new row underneath the last. What looks like a two-dimensional image is really a one-dimensional system unfolding through time, one row per generation. That single trick \\u2014 stacking history instead of just watching the present \\u2014 is what turns an otherwise invisible process into something you can actually study.\"), mdx(\"h2\", null, \"Four classes, one surprise\"), mdx(\"p\", null, \"Wolfram sorted all 256 rules into four broad classes of behavior. Some rules produce uniformity, where every cell rapidly settles into the same state. Others produce repetition \\u2014 simple, predictable patterns that cycle forever, like a diagonal stripe repeating down the grid. A third group produces what looks like pure randomness: patterns with no discernible cycle or structure at all. And a fourth, rarer group produces something in between \\u2014 structured yet unpredictable, orderly yet never quite repeating. Wolfram called this fourth class complexity, and it is the one that matters most.\"), mdx(\"p\", null, \"Rule 90 is a clean example of how strange this can get before you even reach the \\\"complex\\\" category: from a single active cell, it draws a perfect Sierpinski triangle, a fractal pattern, using nothing but the rule \\\"a cell turns on if exactly one of its two neighbors is on.\\\" Rule 30 goes further, producing a pattern so irregular that it has been proposed \\u2014 and used \\u2014 as a source of pseudo-random numbers. Rule 110 goes further still: it has been proven Turing complete, meaning that, like Conway's Game of Life, it can in principle carry out any computation whatsoever, using nothing but a single row of cells and a rule so short it fits on a napkin.\"), mdx(Callout, {\n    type: \"note\",\n    title: \"Computational irreducibility\",\n    mdxType: \"Callout\"\n  }, mdx(\"p\", null, \"Wolfram argues that for rules like these, there is no shortcut. You cannot predict generation one thousand without simulating every generation before it \\u2014 the system's future is only knowable by actually running it. He calls this computational irreducibility, and it is why Rule 30's pattern still surprises people who already know its rule by heart.\")), mdx(\"figure\", null, mdx(\"img\", {\n    src: \"/images/wolfram-s-elementary-cellular-automata-fig-1.jpg\",\n    alt: \"A single lit cell branching into a widening triangular lattice of light and dark\"\n  }), mdx(\"figcaption\", null, \"A single lit cell branching into a widening triangular lattice of light and dark\")), mdx(\"h2\", null, \"Why one dimension is enough\"), mdx(\"p\", null, \"It would be reasonable to assume that real complexity needs real ingredients: many rules, many dimensions, many interacting parts. Elementary cellular automata argue otherwise. A one-dimensional row, a binary state, and a neighborhood of three is the leanest possible system that still qualifies as a cellular automaton \\u2014 and it is already enough to produce fractals, pseudo-randomness, and universal computation. Wolfram has extended this observation into a broader claim he calls the principle of computational equivalence: once a system's behavior is not obviously simple, it tends to be just as computationally sophisticated as any other complex system, whether that system is a brain, a weather pattern, or a strip of black and white squares on a screen.\"), mdx(\"figure\", null, mdx(\"img\", {\n    src: \"/images/wolfram-s-elementary-cellular-automata-fig-2.jpg\",\n    alt: \"A grid split between a calm repeating band and a dense chaotic band\"\n  }), mdx(\"figcaption\", null, \"A grid split between a calm repeating band and a dense chaotic band\")), mdx(\"h2\", null, \"The lesson underneath the noise\"), mdx(\"p\", null, \"What elementary cellular automata really demonstrate is a kind of category error in how people intuitively think about complexity: the assumption that complicated outcomes require complicated causes. They do not. A rule that fits in eight bits can generate a fractal, a stream of usable randomness, or a machine capable of universal computation, depending only on which eight bits you choose. That is a small, precise, and slightly unsettling fact to sit with \\u2014 and it is exactly the same fact that makes Conway's Game of Life, Lenia, and every other cellular automaton worth studying in the first place.\"));\n}\n;\nMDXContent.isMDXComponent = true;"}},"pageContext":{"article":{"id":"f5e5557e-72b2-5b1b-9dc5-b306dc1d8c88","slug":"wolfram-s-elementary-cellular-automata","title":"Wolfram's Elementary Cellular Automata","headline":"256 rules, one dimension, and the accidental birth of randomness","description":"Inside Stephen Wolfram's elementary cellular automata — the one-dimensional rule sets that generate fractals, randomness, and universal computation.","published_at":"2026-07-21T22:29:34.573Z","cover_image":"/images/wolfram-s-elementary-cellular-automata.jpg","status":"published","tags":["cellular-automata","wolfram","emergence","computation","complexity"]},"id":"f5e5557e-72b2-5b1b-9dc5-b306dc1d8c88"}},
    "staticQueryHashes": ["2827962780"]}