43 lines
656 B
Lua
43 lines
656 B
Lua
io.input("input")
|
|
|
|
sum1 = 0
|
|
|
|
cards = {}
|
|
nlines = 198
|
|
for i=1,nlines do
|
|
cards[i] = 1
|
|
end
|
|
|
|
i = 1
|
|
for line in io.lines() do
|
|
pwinning, phave = line:match(": ([%d ]+) | ([%d ]+)$")
|
|
winning = {}
|
|
for win in pwinning:gmatch("%d+") do
|
|
winning[win] = true
|
|
end
|
|
points = 0
|
|
count = 0
|
|
for have in phave:gmatch("%d+") do
|
|
if winning[have] then
|
|
points = points==0 and 1 or (points*2)
|
|
count = count + 1
|
|
end
|
|
end
|
|
sum1 = sum1 + points
|
|
|
|
--print(count)
|
|
for n = (i+1),(i+count) do
|
|
cards[n] = cards[n] + cards[i]
|
|
end
|
|
i = i + 1
|
|
end
|
|
|
|
print("part 1", sum1)
|
|
|
|
sum2 = 0
|
|
for i,v in ipairs(cards) do
|
|
--print(i,v)
|
|
sum2 = sum2 + v
|
|
end
|
|
print("part 2:", sum2)
|