day 11
This commit is contained in:
parent
bcd54e369b
commit
bf39b92abb
56
day11/part1.lua
Executable file
56
day11/part1.lua
Executable file
@ -0,0 +1,56 @@
|
||||
#!/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
|
60
day11/part2.lua
Executable file
60
day11/part2.lua
Executable file
@ -0,0 +1,60 @@
|
||||
#!/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
|
||||
|
||||
for step = 1, math.huge do
|
||||
for r, row in pairs(grid) do
|
||||
for c, cell in pairs(row) do
|
||||
flash(grid, r, c)
|
||||
end
|
||||
end
|
||||
local flashes = 0
|
||||
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()
|
||||
if flashes == #grid * #grid[1] then
|
||||
print(step)
|
||||
break
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue
Block a user