maxrectangle.lua

-- Maximum rectangle finding
-- This generates a messy random pattern, and finds the largest contiguous
-- rectangle of active cells within it.

local primitives = require('forma.primitives')
local multipattern = require('forma.multipattern')

-- Generate a domain and a messy 'blocking' pattern
local domain = primitives.square(80, 20)
local blocks = domain:sample(80)

-- Find the largest contiguous 'unblocked' rectangle in the base pattern
local mxrect = (domain-blocks):max_rectangle()

-- Print it nicely as a multipattern
multipattern.new({blocks, mxrect}):print({'o','#'}, domain)
generated by LDoc 1.5.0 Last updated 2025-03-12 19:36:11