use deque in fish solution

This commit is contained in:
Felix Van der Jeugt 2021-12-06 22:02:21 +01:00
parent d99434ac43
commit 563e354df5
No known key found for this signature in database
GPG key ID: 58B209295023754D
4 changed files with 37 additions and 20 deletions

View file

@ -1,26 +1,26 @@
#!/usr/bin/env luajit
require("utils")
require("deque")
local fishes = {}
local fishes = deque()
for timer = 0, 9 do
fishes[timer] = 0
fishes:append(0)
end
for _, timer in pairs(split(io.open(arg[3]):read("*a"), ",")) do
fishes[tonumber(timer)] = fishes[tonumber(timer)] + 1
fishes:set(tonumber(timer), fishes:get(tonumber(timer)) + 1)
end
for day = 1, 80 do
fishes[9] = (fishes[0] or 0) + (fishes[9] or 0)
fishes[7] = (fishes[0] or 0) + (fishes[7] or 0)
for timer = 0, 9 do
fishes[timer] = fishes[timer + 1]
end
local breeding = fishes:popleft() or 0
fishes:append(0)
fishes:set(8, (fishes:get(8) or 0) + breeding)
fishes:set(6, (fishes:get(6) or 0) + breeding)
end
local sum = 0
for timer, fishday in pairs(fishes) do
sum = sum + fishday
while fishes.size > 0 do
sum = sum + (fishes:pop() or 0)
end
print(sum)

View file

@ -1,26 +1,26 @@
#!/usr/bin/env luajit
require("utils")
require("deque")
local fishes = {}
local fishes = deque()
for timer = 0, 9 do
fishes[timer] = 0
fishes:append(0)
end
for _, timer in pairs(split(io.open(arg[3]):read("*a"), ",")) do
fishes[tonumber(timer)] = fishes[tonumber(timer)] + 1
fishes:set(tonumber(timer), fishes:get(tonumber(timer)) + 1)
end
for day = 1, 256 do
fishes[9] = (fishes[0] or 0) + (fishes[9] or 0)
fishes[7] = (fishes[0] or 0) + (fishes[7] or 0)
for timer = 0, 9 do
fishes[timer] = fishes[timer + 1]
end
local breeding = fishes:popleft() or 0
fishes:append(0)
fishes:set(8, (fishes:get(8) or 0) + breeding)
fishes:set(6, (fishes:get(6) or 0) + breeding)
end
local sum = 0
for timer, fishday in pairs(fishes) do
sum = sum + fishday
while fishes.size > 0 do
sum = sum + (fishes:pop() or 0)
end
print(sum)