Day 1: Part 2

This commit is contained in:
tommy 2024-12-02 08:34:55 -05:00
parent 93e28f068a
commit 2ce473c58d
Signed by: tommy
GPG Key ID: E12CE5A632617F4E

49
day1/day1_part2.lua Normal file
View File

@ -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)