RosettaCodeData/Task/One-dimensional-cellular-automata/Pluto/one-dimensional-cellular-automata.pluto
2026-04-30 12:34:36 -04:00

24 lines
576 B
Text

require "table2"
local trans <const> = "___#_##_"
local v = |cell, i| -> cell[i] != "_" ? 1 : 0
local function evolve(cell, backup)
local len = #cell - 2
local diff = 0
for i = 2, len do
backup[i] = trans[v(cell, i - 1) * 4 + v(cell, i) * 2 + v(cell, i + 1) + 1]
diff += backup[i] != cell[i] ? 1 : 0
end
cell:clear()
cell:join(backup)
return diff != 0
end
local c = "_###_##_#_#_#_#__#__":split("")
local b = "____________________":split("")
while true do
print(c:slice(2):concat(""))
if !evolve(c,b) then break end
end