#!/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)