Game of Life, twice

The same cellular automaton built by two assistants, compared feature by feature.

One cellular automaton, two assistants

Conway’s Game of Life is the classic test for a coding assistant: the rules fit in a sentence, yet a good simulator needs careful data structures, a responsive canvas, an editing model and a lot of design judgment. Two versions were built on The Late Build, one with ChatGPT and one with Claude, and both are complete web apps. They are listed together here so you can see how two assistants approach the same brief when they are given room to be ambitious. Neither is declared the winner, and the comparison below sticks to what is verifiable in the code and the project notes.

Which is which? The ChatGPT version is a React application built from a hosted full-stack starter and published on ChatGPT’s site hosting. It is the one listed as a single-player simulation in the Nodal Play library. The Claude version is a single self-contained HTML file with no dependencies and no build step needed to run it, designed to be published as a Claude artifact or opened straight from a file.

The rules, for readers who need them: a live cell with fewer than two live neighbors dies, with two or three it survives, with more than three it dies, and a dead cell with exactly three live neighbors becomes alive. Four rules, an infinite grid and nothing else produce gliders that walk, guns that fire forever and machines complex enough to run any computation.

The Claude version

The landing page of the Claude-built Game of Life: the heading Conway's Game of Life, a rules animation and an Enter the simulator button
The Claude version opens on an editorial landing page: a title, an animated walkthrough of the rules, four small facts and an Enter the simulator button.

The Claude version treats Life as something to explain as well as to run. The landing page is a short essay with an animated rules panel that steps through underpopulation, survival, overpopulation and birth, then a button into the simulator. Under the hood it is an exactness-first design.

Engine

Catalogue and measurement

The simulator ships with 1,256 patterns from the LifeWiki collection as bundled in an MIT-licensed open-source repository. The interesting part is that classification, period, speed, displacement, bounding box and population were not copied from the source files. Every pattern was simulated until it cycled, died or ran out of budget, and the measured result was recorded. That is why a pattern’s stated period always matches what you see when you run it, and why a glider reads as c/4 diagonal with period 4, a lightweight spaceship as c/2 with period 4 and a copperhead as c/10 with period 10. Forty-six patterns need a rule other than Conway’s, and the catalogue flags them and offers to switch.

Interface

The Claude-built Game of Life simulator running a Gosper glider gun on a pale grid, with a toolbar of Pause, Step, Rewind and speed
The simulator running a Gosper glider gun: a toolbar with Pause, Step, Rewind, speed, Undo, Redo, Fit, Reset, Import, Export and counters for generation, population, rate and zoom.

Testing

The engine and shape code live in a file with no DOM dependency so they can be tested in Node. The suite has 77 assertions comparing the engine against a naive reference implementation, including random soups, torus wrapping and shape geometry. The README also keeps a numbered list of bugs already found and fixed, headed with a warning to read it before editing. One bug came from a JavaScript string-replacement trap: the dollar sign is the row separator in the pattern format and also special in replacement strings, so the build now uses function-form replacements and asserts every placeholder was filled.

The ChatGPT version

The ChatGPT-built Game of Life workspace with a dark theme, editing tools, a pattern library and a simulation settings panel
The ChatGPT version is a research-workspace style layout: editing tools and a pattern library on the left, the plane in the middle and an inspector with World, Rules, Appearance and Patterns tabs on the right.

The ChatGPT version is a React single-page app with a more dashboard-like feel. Its subtitle is “Cellular automated research workspace,” and the layout reflects that: tools on the left, the plane in the center, an inspector with four tabs on the right and a playback bar below.

It ships with a rendering smoke test that server-renders the page and checks the markup.

Side by side

Claude versionChatGPT version
DeliveryOne HTML file, no dependencies, works from a fileReact app on a hosted starter, runs on the web
EngineChunked bit-parallel, up to 4,096 gen/s advertisedSparse cell set, up to 1,000 gen/s target
RulesAny B/S rulestring, B0 rejectedFive presets
Patterns1,256 built in, measured and searchable offlineA small built-in set plus a runtime-fetched catalogue
Editing4 tools, XOR placement, shapes, move last shape, 40-deep undo, 400-step rewind9 tools, inspect, 120-step history
ViewSharp and density rasterizers, trails, grid decadesRotation and tilt, adaptive grid
Themes14 palettes, custom, shareable code6 themes including custom
MobileDedicated layout with pinchResponsive with a settings sheet
Tests77 engine and shape assertionsServer-render smoke test
Safety limitsChunk-budgeted trails, rejected rules250,000-cell cap

What the comparison teaches

Specification beats model

The biggest differences come from the briefs, not from the models. The Claude version was driven by a long list of requirements (exact engine, measured catalogue, themes, mobile, no network) and an agent that tested against a reference. The ChatGPT version was driven toward a workspace feel with a strong inspector and a rotation and tilt view. If you prompt an assistant for a polished dashboard you will probably get one; if you prompt for exactness and tests you will probably get those instead.

Hosted starter or single file?

A hosted starter gives you routing, server rendering and a path to storage, but it brings dependencies and a build. A single file travels anywhere and survives a browser tab from a decade ago. For a simulation with no backend, the single file was the cleaner deliverable; for something that wants accounts or shared data, the starter has a head start.

Runtime network use

The ChatGPT version fetches its larger pattern list from a public repository when you open the catalogue; the Claude version bundles everything, so it never touches the network. That affects privacy, speed and what happens when a service goes down.

Documentation as memory

The Claude version has a file map, a build explanation and a bug list. That is what let later agent sessions make changes without breaking exactness. See The vibe-coding workflow for the broader practice.

Try them and keep going

The ChatGPT version is reachable from the Nodal Play library. The Claude version was built as a standalone page and artifact. Both appear in the projects list, and both were discussed on stream; check the socials page for the dated recordings. For a different kind of web tool built the same way, see Celebrity Explorer.