m, n = 10, 10
world = {}
for i = 0, m - 1 do
world[i] = {}
for j = 0, n - 1 do
world[i][j] = 0
end
end
world[0][1], world[1][2], world[2][0], world[2][1], world[2][2] = 1, 1, 1, 1, 1
function deepCopy(tb)
if tb == nil then
return nil
end
local copy = {}
for k, v in pairs(tb) do
if type(v) == 'table' then
copy[k] = deepCopy(v)
else
copy[k] = v
end
end
setmetatable(copy, deepCopy(getmetatable(tb)))
return copy
end
while(cmd ~= 'q') do
os.execute('cls')
local _world = deepCopy(world)
for i = 0, m - 1 do
for j = 0, n - 1 do
local state = 0
if (not ((i == 0) or (j == 0))) then
state = state + world[i - 1][j - 1]
end
if (not (i == 0)) then
state = state + world[i - 1][j]
end
if (not ((i == 0) or (j == n - 1))) then
state = state + world[i - 1][j + 1]
end
if (not (j == 0)) then
state = state + world[i][j - 1]
end
if (not (j == n - 1)) then
state = state + world[i][j + 1]
end
if (not ((i == m - 1) or (j == 0))) then
state = state + world[i + 1][j - 1]
end
if (not (i == m - 1)) then
state = state + world[i + 1][j]
end
if (not ((i == m - 1) or (j == n - 1))) then
state = state + world[i + 1][j + 1]
end
if ((state < 2) or (state > 3)) then
_world[i][j] = 0
else if (state == 3) then
_world[i][j] = 1
end
end
if (_world[i][j] == 1) then
io.write('||')
else
io.write(' ')
end
end
io.write('\n')
end
world = deepCopy(_world)
cmd = io.read()
end