#!/usr/bin/env luajit require("utils") local grid = {} for line in io.lines(arg[3]) do local row = {} for char in chars(line) do table.insert(row, tonumber(char)) end table.insert(grid, row) end function printgrid() for r, row in pairs(grid) do for c, cell in pairs(row) do if cell > 9 then io.write('*') else io.write(cell) end end io.write('\n') end end printgrid() function flash(grid, r, c) grid[r][c] = grid[r][c] + 1 if grid[r][c] == 10 then for dr = -1, 1 do if 0 < r + dr and r + dr <= #grid then for dc = -1, 1 do if 0 < c + dc and c + dc <= #grid[r] then flash(grid, r + dr, c + dc) end end end end end end local flashes = 0 for step = 1, 100 do for r, row in pairs(grid) do for c, cell in pairs(row) do flash(grid, r, c) end end for r, row in pairs(grid) do for c, cell in pairs(row) do if cell > 9 then grid[r][c] = 0 flashes = flashes + 1 end end end print(flashes) printgrid() end