40 lines
911 B
Lua
40 lines
911 B
Lua
local strings = require "cc.strings"
|
|
local puzzle1 = {}
|
|
|
|
function puzzle1.isFresh(ranges, i)
|
|
for _, range in ipairs(ranges) do
|
|
if range[1] <= i and i <= range[2] then
|
|
return true
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
|
|
function puzzle1.solve(input)
|
|
local lines = strings.split(input, "\n")
|
|
local ranges = {}
|
|
|
|
local bIngr = false
|
|
local totalFresh = 0
|
|
|
|
for _, line in ipairs(lines) do
|
|
if line == "" then
|
|
bIngr = true
|
|
else
|
|
if bIngr then
|
|
local ingr = tonumber(line)
|
|
if puzzle1.isFresh(ranges, ingr) then
|
|
totalFresh = totalFresh + 1
|
|
end
|
|
else
|
|
local min, max = line:match("(%d+)%-(%d+)")
|
|
table.insert(ranges, {tonumber(min), tonumber(max)})
|
|
end
|
|
end
|
|
end
|
|
|
|
return totalFresh
|
|
end
|
|
|
|
return puzzle1
|