diff --git a/day1/day1_part2.lua b/day1/day1_part2.lua new file mode 100644 index 0000000..ab3dea6 --- /dev/null +++ b/day1/day1_part2.lua @@ -0,0 +1,49 @@ +--Lua 5.4.2 +local File = io.open("input.txt", "r") + +if not File then + print("File not found") + return +end + +local LeftList = {} +local RightList = {} + +for Line in File:lines() do + local LeftId, RightId = Line:match("(%d+)%s+(%d+)") + table.insert(LeftList, tonumber(LeftId)) + table.insert(RightList, tonumber(RightId)) +end + +File:close() + +if #LeftList ~= #RightList then + print("Lists are not the same size") + return +end + +--[[ + Format: + Appearances[Id] = AppearanceCount +--]] +local Appearances = {} + +for ListIndex = 1, #RightList do + local Id = RightList[ListIndex] + if not Appearances[Id] then + Appearances[Id] = 0 + end + Appearances[Id] = Appearances[Id] + 1 +end + +local SimilarityScore = 0 + +for ListIndex = 1, #LeftList do + local Id = LeftList[ListIndex] + local AppearanceCount = Appearances[Id] + if AppearanceCount then + SimilarityScore = SimilarityScore + Id * AppearanceCount + end +end + +print("Similarity score:", SimilarityScore)