Advertisement
Waffle3z

aoc2021 day 20

Dec 19th, 2021
936
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 0.77 KB | None | 0 0
  1. local code
  2. local grid = {}
  3. for v in getinput():gmatch("[^\n]+") do
  4.     if not code then
  5.         code = v
  6.     else
  7.         local row = {}
  8.         for c in v:gmatch(".") do
  9.             row[#row+1] = c == "#" and 1 or 0
  10.         end
  11.         grid[#grid+1] = row
  12.     end
  13. end
  14.  
  15. local borders = 0
  16. for i = 1, 50 do
  17.     local newgrid = {}
  18.     for y = 0, #grid+1 do
  19.         newgrid[y+1] = {}
  20.         for x = 0, #grid+1 do
  21.             local b = 0
  22.             for dy = -1, 1 do
  23.                 for dx = -1, 1 do
  24.                     local v = grid[y+dy] and grid[y+dy][x+dx] or borders
  25.                     b = b*2 + v
  26.                 end
  27.             end
  28.             newgrid[y+1][x+1] = code:sub(b+1, b+1) == "#" and 1 or 0
  29.         end
  30.     end
  31.     grid = newgrid
  32.     borders = 1 - borders
  33.     if i == 2 or i == 50 then
  34.         local c = 0
  35.         for y, row in pairs(grid) do
  36.             for x, v in pairs(row) do
  37.                 c = c + v
  38.             end
  39.         end
  40.         print(c)
  41.     end
  42. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement