2020 day 2
This commit is contained in:
parent
8584d36762
commit
cbdecb235e
|
@ -0,0 +1,35 @@
|
|||
#!/usr/bin/env lua
|
||||
|
||||
local data = {}
|
||||
|
||||
for line in io.lines() do
|
||||
local password_start, n1, n2, char = select(2, line:find('^(%d+)-(%d+) (%l): '))
|
||||
table.insert(data, {tonumber(n1), tonumber(n2), char, line:sub(password_start + 1)})
|
||||
end
|
||||
|
||||
local function part1()
|
||||
local count = 0
|
||||
for _, line in ipairs(data) do
|
||||
local min, max, char, password = table.unpack(line)
|
||||
local char_count = select(2, password:gsub(char, ''))
|
||||
if min <= char_count and char_count <= max then
|
||||
count = count + 1
|
||||
end
|
||||
end
|
||||
return count
|
||||
end
|
||||
|
||||
local function part2()
|
||||
local count = 0
|
||||
for _, line in ipairs(data) do
|
||||
local pos1, pos2, char, password = table.unpack(line)
|
||||
local has1, has2 = password:sub(pos1, pos1) == char, password:sub(pos2, pos2) == char
|
||||
if (has1 or has2) and not (has1 and has2) then
|
||||
count = count + 1
|
||||
end
|
||||
end
|
||||
return count
|
||||
end
|
||||
|
||||
print(part1())
|
||||
print(part2())
|
Loading…
Reference in New Issue