corridors.lua
local primitives = require('forma.primitives')
local automata = require('forma.automata')
local neighbourhood = require('forma.neighbourhood')
local domain = primitives.square(80,20)
local ca = domain:sample(1)
local moore = automata.rule(neighbourhood.moore(), "B12/S012345678")
local diag = automata.rule(neighbourhood.diagonal_2(), "B01/S01234")
local vn = automata.rule(neighbourhood.von_neumann(),"B12/S01234")
local ruleset = {vn, moore, diag}
repeat
local converged
ca, converged = automata.async_iterate(ca, domain, ruleset)
until converged
local nbh = neighbourhood.von_neumann()
ca:neighbourhood_categories(nbh)
:print(nbh:category_label(), domain)