use deque in fish solution
This commit is contained in:
parent
d99434ac43
commit
563e354df5
4 changed files with 37 additions and 20 deletions
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue