Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local code
- local grid = {}
- for v in getinput():gmatch("[^\n]+") do
- if not code then
- code = v
- else
- local row = {}
- for c in v:gmatch(".") do
- row[#row+1] = c == "#" and 1 or 0
- end
- grid[#grid+1] = row
- end
- end
- local borders = 0
- for i = 1, 50 do
- local newgrid = {}
- for y = 0, #grid+1 do
- newgrid[y+1] = {}
- for x = 0, #grid+1 do
- local b = 0
- for dy = -1, 1 do
- for dx = -1, 1 do
- local v = grid[y+dy] and grid[y+dy][x+dx] or borders
- b = b*2 + v
- end
- end
- newgrid[y+1][x+1] = code:sub(b+1, b+1) == "#" and 1 or 0
- end
- end
- grid = newgrid
- borders = 1 - borders
- if i == 2 or i == 50 then
- local c = 0
- for y, row in pairs(grid) do
- for x, v in pairs(row) do
- c = c + v
- end
- end
- print(c)
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement