31 lines
584 B
Lua
Executable file
31 lines
584 B
Lua
Executable file
#!/bin/env lua
|
|
|
|
local left, right = {}, {}
|
|
local rightCount = {}
|
|
for line in assert(io.open("input/1")):lines() do
|
|
local l, r = line:match("(%d+)%s+(%d+)")
|
|
l, r = assert(tonumber(l)), assert(tonumber(r))
|
|
|
|
table.insert(left, l)
|
|
table.insert(right, r)
|
|
|
|
rightCount[r] = (rightCount[r] or 0) + 1
|
|
end
|
|
|
|
table.sort(left)
|
|
table.sort(right)
|
|
|
|
local sumDiff = 0
|
|
for i=1,#left do
|
|
sumDiff = sumDiff + math.abs(left[i] - right[i])
|
|
end
|
|
|
|
print("Part one", sumDiff)
|
|
|
|
local simScore = 0
|
|
for _,l in ipairs(left) do
|
|
simScore = simScore + l * (rightCount[l] or 0)
|
|
end
|
|
|
|
print("Part two", simScore)
|
|
|