This page requires JavaScript. Rest assured, it is free software, doesn't do any tracking, and this page has an actual reason to use JS; it's a cellular automaton simulator.
V1.0.0 by 256, Inspired by Jack Eisenmann ‽
World: ? x ?
Selection: ? x ?
Generation 413, 612 gens/second
Rule:
Pen Tool
Select Tool
Colour Picker
Drag Camera

Zoom: ++ + 4 - -- | Δt: ++ + ??ms (??fps) - -- | generations/frame: ++ + 1 - -- | Pan camera: ← ↑ → ↓ | Pause | Save Codes: get get selection set | Simulate one frame | Centre Camera | Clear World | Change Rule: set | Algorithm: Brute Force
Close

Reasoning Realm

This is an implementation of cellular automata in HTML5 with javascript, in development since 2016-03-03. It originated as an attempt to re-implement Jack Eisenmann's "Logic Land" cellular automaton better than he did, but it grew far beyond that and became capable of running other rules. As such, "Reasoning Realm" was named after it; other names with this structure include "Intelligence Island", "Deduction Dimension", and "Smartness Sphere". Dan came up with the last two. The source code of this programme is over 2000 lines, and it's all just one .html file. Reasoning Realm can currently run Lifelike CA, Generations rules, cylic cellular automata, and generalised wire automata (including WireWorld) with moore, JvN, and hexagonal neighbourhoods, Logic Land, Rychládrát, and LifeHistory.

I declare this to be free software. Feel free to reverse engineer it, distribute it, modify it, distribute modified versions of it, etc. (as if anyone cares enough). The source code is this file itself.

Credit goes to 256 (ME) (I previously also went by the name "blah") for being, like, really smart, Jack Eisenmann for inspiration and Logic Land savecodes (the functions to handle that were taken straight from his code with his permission), and dan.

Controls

wasd/arrow keys: Move camera
F: Simulate one frame
I: Zoom in linearly
O: Zoom out linearly
[: Zoom out exponentially
]: Zoom in exponentially
space: Play/pause
E: Erase selection
X: Cut selection
C: Copy selection
V: Paste selection
M: Mirror selection vertically
N: Mirror selection horizontally
T: Rotate selection
`: Randomly fill selection with values from 0 up to the selected element (` key to the left of 1)
H: centre camera
0,1,2,3,4,5,6,7,8,9: Select corresponding state (and switches to the Pen tool if it isn't already selected)
Q: Same as 0
-: Select state 10 (the hyphen key, to the right of 0)
Z: Select state 17
R: Selection tool
J: Drag Camera tool
alt+f4: Close help menu

Pause lock: If you enable this, you will not be able to pause or unpause. useful iff you=dan Lock

Logic Land save codes: This is the undocumented, strange, inefficient format Logic Land used. get

Changelog

1.0.0

2026-09-04

After a brief hiatus of 8 years, I've decided to revisit Reasoning Realm and finally fix up the code. I've improved massively as a programmer in those years, and so I had to go through the whole programme, remedying innumerable infelicities and fixing bugs. The original was not very well written; I like to think the code is far more elegant now, and most importantly, more correct.

There are still some things I might like to do with the programme (see "Todo List" below) but I think now I've polished it up enough that I'm unlikely to want to revisit it for a long time. Probably another 8 years.

  • +Optimised "Ignore Non Changing Cells" algorithm to be O(N) instead of O(N^2), where N is the number of cells that are changing.
  • *Fixed bug where loading a LogicLand (non-RLE) savecode, then changing the rule to something else, could result in errors.
  • *Fixed bug where using a tool other than the pen on the info area at the top right, but not over the world, would cause erroneous behaviour.
  • *Fixed several bugs with rectangle select tool.
  • *Fixed bug where clicking on interrobang button with pen tool would draw on the pattern.
  • *Fixed bug where contracting the world on the bottom could cause an error and halt the simulation.
  • *Made it so "Clear World" redraws the selection.
  • +Some rulestrings are now canonicalised; this may be useful, since some CA software is case-sensitive.
  • *Fixed bug where the gens/second count would become negative when loading a savecode.
  • +Made it so it detects window resizing immediately, instead of just blindly checking the page width/height every 5 seconds.
  • +Added new way of resizing the world, where you grab one of 8 handles on the corners and edges, which is far more intuitive and easy than the awkward LogicLand-inspired way.
  • *Made it so that clicking on the world or tool/element selection at the top left only does anything if you use the left mouse button.
  • ~Changed default algorithm to "Ignore Non Changing Cells".
  • *Fixed bug with the "Ignore Non Changing Cells" algorithm where making a selection would not prompt the surrounding cells to update.

Todo List

This is a list of easy and difficult goals. Some I will probably never bother to do. They are in no order whatsoever. This list is maintained poorly if at all.

  • Add options for colour schemes
  • Make the 'close' button in the help menu follow you as you scroll down
  • Add support for unbounded grids
  • Add support for other geometries, like cylinders, tori, Klein bottles, etc.
  • Allow multiple worlds loaded at once
  • Add undo functionality
  • Change the programme to use a 1D array because it's probably faster
Bugs:
  • The Pan Camera tool skips around when you zoom in or out whilst dragging the world.