A hex cell and its six neighbours make eight possible live counts, so a rule that depends only on
that total has exactly 28 = 256 forms — codes T00 through
TFF. That is the whole class, not a sample, and it fits a 16×16 grid with nothing
left over. Every wider constraint is too big to draw, so the same 16×16 grid becomes a
random slice of it: 256 of the 16,384 outer-totalistic rules, of the 228 rotationally
symmetric ones, or of all 2128. Every world is 96 × 112 cells and shares
one initial condition, so the only difference between any two tiles is the rule. Click a tile to
open it full size.
Built entirely with
@hexlife/embed
— two custom elements and a DOM-free API, no other dependencies. The map is one
<hexlife-grid>; each tile you open is a <hexlife-world>;
the short codes, B/S notation, palette list and Explorer links all come from
@hexlife/embed/api.
npm install @hexlife/embedimport '@hexlife/embed' // registers both elements grid.rulesets = Array.from({length: 256}, // T00–TFF *is* the totalistic class (_, i) => 'T' + i.toString(16).padStart(2, '0')) grid.rulesets = draw(256, 'R', 28) // …or 256 of the 2^28 rotational ones — // a tag letter + a random payload is a rule
…