Created
December 9, 2018 07:11
-
-
Save Nimblz/99a9d2bee9d3bea76b159a2586f55d25 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
local function ProcessInput(input) | |
local ProcessedInputs = {} | |
for match, _ in input:gmatch("(%a+)\n") do | |
table.insert(ProcessedInputs,match) | |
end | |
return ProcessedInputs | |
end | |
local function GetLetters(id) | |
local Letters = {} | |
for letter in id:gmatch("%a") do | |
table.insert(Letters,letter) | |
end | |
return Letters | |
end | |
local function CountLetters(id) | |
local CountMap = {} | |
for idx,letter in ipairs(GetLetters(id)) do | |
CountMap[letter] = (CountMap[letter] or 0) + 1 | |
end | |
return CountMap | |
end | |
local function HasLetterCount(id,countToCheck) | |
for letter,count in pairs(CountLetters(id)) do | |
if count == countToCheck then | |
return true | |
end | |
end | |
return false | |
end | |
local function HasOneDifferentInSameSpot(id1,id2) | |
local Id1Letters = GetLetters(id1) | |
local Id2Letters = GetLetters(id2) | |
local Diffs = 0 | |
local IdxOfDifference = nil | |
for idx,letter in ipairs(Id1Letters) do | |
if Id2Letters[idx] ~= letter then | |
Diffs = Diffs + 1 | |
IdxOfDifference = idx | |
end | |
if Diffs > 1 then | |
return false | |
end | |
end | |
return (Diffs == 1), IdxOfDifference | |
end | |
local function CheckSum(input,countsToCheck) | |
local ProcessedInput = ProcessInput(input) | |
local CountsIndex = {} | |
local CheckSum = 1 | |
for _,id in pairs(ProcessedInput) do | |
for _,countToCheck in pairs(countsToCheck) do | |
if HasLetterCount(id,countToCheck) then | |
--print("id:",id,"has letters that appear at least",countToCheck,"times.") | |
CountsIndex[countToCheck] = (CountsIndex[countToCheck] or 0) + 1 | |
end | |
end | |
end | |
for count,howManyContained in pairs(CountsIndex) do | |
CheckSum = CheckSum * howManyContained | |
end | |
return CheckSum | |
end | |
local function FindCorrectBox(input) | |
local ProcessedInput = ProcessInput(input) | |
for idx1,id1 in ipairs(ProcessedInput) do | |
for idx2,id2 in ipairs(ProcessedInput) do | |
if idx1 ~= idx2 then | |
local IsDiff, DiffIdx = HasOneDifferentInSameSpot(id1,id2) | |
if IsDiff then | |
local TrimmedString = id1:sub(1,DiffIdx-1)..id1:sub(DiffIdx+1,-1) | |
return TrimmedString | |
end | |
end | |
end | |
end | |
end | |
local Input = require(script.Input) | |
print("Day 2 | Part 1") | |
print("Checksum:",CheckSum(Input, {2,3})) | |
print("Day 2 | Part 2") | |
print("Correct box:",FindCorrectBox(Input)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
local Input = [[ | |
oeambtcgjqnzhgkdylfapoiusr | |
oewmbtcxjqnzhgvdyltapvqusr | |
oewmbtchjqnzigkdylfapviuse | |
oeimbucxjqnzhgkdyyfapviusr | |
fewmbtcxjqndhgcdylfapviusr | |
oevgbtccjqnzhgkdylfapviusr | |
oewmbtcxjqnzhnkdylmapvpusr | |
oewmbtcxjqnzhxkdyldapvirsr | |
oewmutccjqnzngkdylfapviusr | |
oewmbtcxbqnzhgkdsliapviusr | |
ozwmbtfxjqnzcgkdylfapviusr | |
oewmbtdxjqnzhgkdypfapsiusr | |
oeylbtcxjqnzhgyyylfapviusr | |
oewmbtcxjqnzhgkdrlfakuiusr | |
oewmbtcujqnxhgkdylfadviusr | |
oewmbtcxlqpzhgkdylfaaviusr | |
oewmztcxjqnzhgkdylfqpliusr | |
oeembtcxjqnzhgkdtlmapviusr | |
onwmbtcxjqnqhgkdylfapdiusr | |
oewmbtcxnqnzhgkdylfapsbusr | |
oeoibtjxjqnzhgkdylfapviusr | |
oxwmbtcxjqnzhgkdylfapcipsr | |
oewmbtoxbqnzhgzdylfapviusr | |
okwubtcxjqnzhgkdylfapiiusr | |
oewmbtcxjqnzhgodylfapnicsr | |
oewmitcxjqnzhgkdylfaphlusr | |
oewmbtaxjqnzhgkhylfapveusr | |
oewmftcbjqnzhgkdylfapviurr | |
oewmbtcujqnzbgkdylfapliusr | |
oeevbtcxjqnzhgkdylfapniusr | |
oewmbtcxjqnvhgkdylfapnpusr | |
oewabtcxjqnzhgddylfapviust | |
oewmbtyxjqnzhgkdvlfapvinsr | |
jewmbtcxjonzhzkdylfapviusr | |
oewmbrcxjqnzxgkdylfapoiusr | |
dewmbtmxjqnzhgkdyvfapviusr | |
oewmbtctjqnzhgkdmlfapvihsr | |
oewmbjcxjqnzhgvdylfapviurr | |
oewmbtcxjqnzhgcdxlfapvfusr | |
oewmbucxjqnzhgkdyltapvifsr | |
gewmbtcejqezhgkdylfapviusr | |
oewebtcxjznzhgkdylfapvhusr | |
oewmjtcxjqnzhgkdycfakviusr | |
oewmbtcxjtnvhgkdylfabviusr | |
oewmbtcxjqnthgkgclfapviusr | |
hewmbtcxjqnzhgkdwlfapziusr | |
oewmbtcxjqnzhgkdylfqpviysf | |
oewmbtcxjvnzhgmdylfapviuse | |
oewmbtcxjqnphgkdymzapviusr | |
oewmbtcxjqnzwmkdylfapvbusr | |
oewmbthxjqnzhgkdylfatvilsr | |
oewmbtcxaznzhgkhylfapviusr | |
zewmbscxjqnzhgkdylfatviusr | |
oewmbecyaqnzhgkdylfapviusr | |
oewmbtnxjqnzhekxylfapviusr | |
oewmbtcxjqczhgkdyltnpviusr | |
yewmbecxjnnzhgkdylfapviusr | |
oewmbocxjqnzhgkyylfapviusv | |
oewmxtcxjqnzhgkkylfspviusr | |
oiwmbtcxjqnzhgkdydfapvgusr | |
oewmbtcxjqnzngydylfwpviusr | |
oewmctcxjqnzhgkdelfapviasr | |
oewmbtcxjqnzhgxdwmfapviusr | |
oewmntcxjqnzhgkdylfamviusw | |
oewmatcxjqbzhgkdylfapvhusr | |
oewmbtcxjqnqhmkdyluapviusr | |
opwmbtcxjqnzhgkdywfapvilsr | |
omwmbtcxjqnlhgkdylyapviusr | |
oewmltcxoqnzhgkdylfapvfusr | |
oewmbtcxjqtzhgkdyyoapviusr | |
oewmbtcxjqnzhrkdzlffpviusr | |
oewmbtqxyqnzhgkdylfalviusr | |
oeuzbtcxlqnzhgkdylfapviusr | |
oewmbtcxjqnzhtxdylflpviusr | |
oewmdtfxjqnzhgkdylfapviufr | |
ojwmbtcxjqnzhgkdylfypviqsr | |
oewmbtcxjqnzhgkdylfapvivuf | |
oewmjtcsjqnzxgkdylfapviusr | |
ohembtcxjqnzhnkdylfapviusr | |
oewmptcajqnzhgkdylfapviusd | |
oewmbtcxjcnwhgkbylfapviusr | |
oewmbtcxjqnzhgddnlfapvqusr | |
oewmbtcfjqnzhgkdypfapvzusr | |
oewdbtccjqnzhgfdylfapviusr | |
oewmbtcxjpnzhgkdplfaqviusr | |
oepmbhcxjqnzhgkdylfaaviusr | |
oewmbtcwjqxzhgkwylfapviusr | |
oewmatcxjqnchgkdylfapvifsr | |
omwmbncxjqnzhgkdylfapviuyr | |
sewmbsckjqnzhgkdylfapviusr | |
oewubtcxjqnzhgkdyluapvausr | |
ohwmbtcxqqhzhgkdylfapviusr | |
oewmbtcxjqnzhgkpylfapnissr | |
eewmbccxjqnzhgkdylbapviusr | |
oewmitcyjqnzhgkdylkapviusr | |
oewmbtcxjvnzhgkdyjfvpviusr | |
oewmbtcxjqmzhgkdyefagviusr | |
oewmbtcvjqnzhgkdylpapviufr | |
oewmbtcxjrnkhgkdylfapsiusr | |
oewmbtcxjqnzygkdylfaxvipsr | |
oexmbtcxjqczhgkdyloapviusr | |
oewmbtcxjqnlhtkdylfapvmusr | |
oewmbtcxdqjzdgkdylfapviusr | |
oewmbtclgqnzhgkdylfabviusr | |
oewmbtvfjqnzhgkdylfapviulr | |
oewmbtcxjqnzhgkdyllarvijsr | |
oewmbtyxjqnzhgpdylxapviusr | |
oeylbtcxjqnzhgkyylfapviusr | |
oewmbtctjqnzhjkdylfapviulr | |
oermatcxjqnzhgkdylzapviusr | |
oewmbtcxjqnztgkdzlfapviutr | |
oewlbtcxjqnztgkvylfapviusr | |
oewmbtcxjqzvhgkdylfapviusk | |
oewmbtcxjqnzmgkdyldapvilsr | |
felmbtcxjqnzhgkdylfapviusl | |
oewmbtcxjgnzhgkjylfaeviusr | |
ovwmbtcxjqpzhgkdylfapvizsr | |
eewmbtcpjqnzhgkdylfapvijsr | |
oewmbzcxjqnzhgkdylfaeviutr | |
tewmbtcljqhzhgkdylfapviusr | |
oewmbtcujqnzhgkdnliapviusr | |
oewmbtcljqnzhskdylfapvgusr | |
oewmbtchjqnzhgkdylmapviuse | |
oewmbtcxjqnzbgkdylfaiviurr | |
oewmbtcxjqnzhkkdyloapsiusr | |
oewjbtcxjqnhhgkdylfapjiusr | |
odwmbtcnjqnzhgkdylfapvicsr | |
oewmbccxjqrzwgkdylfapviusr | |
kewmbtcvjqnzhgkdylaapviusr | |
okwmbtcxjqnzhgkdylfspvausr | |
oewmbtcxjynzhgkdyafapviusw | |
oewmbtcxjqnzhgwdyleayviusr | |
oewmbtcxjqnzhgkdylfapviicl | |
oewmbtcxjqnzhgkdyltaeziusr | |
oewmbtcxrqnzhgkdylftpvizsr | |
oewsrtcgjqnzhgkdylfapviusr | |
oewmbtsxgqnzhgxdylfapviusr | |
oewmbtcxjanzhgtdylfapeiusr | |
oewybtcgjqnzhgkdylfapviust | |
ojwmbncxjqnzhgkdylfapgiusr | |
ocgebtcxjqnzhgkdylfapviusr | |
oejcbtcxjqnzhgkvylfapviusr | |
oswmbtcxjqnkhgkdylfapviusb | |
oewdbtcxjqnzdgkdylfypviusr | |
oawmutcxjqnzhgkddlfapviusr | |
oewzbtcxyqnzhgkdylfapviusy | |
zewmbtcxjqnzkgkdylwapviusr | |
aewmbtkxjqnzhgkdylfapviuer | |
oewmbtcxwqnzhgkdyofapviuur | |
oewmbtcxjqnzggkdylfapanusr | |
oewmstcxuqnzhgkdylzapviusr | |
zewmbtcxjqozhgkdelfapviusr | |
oewzbtcxjqnahgkdyllapviusr | |
fewmatcxjqnghgkdylfapviusr | |
oewmbtcxjqnzhgkdylfapviyqb | |
oewwbtcxjqnzhgkdyljapviqsr | |
oewmbtbxjqnzhgkxylfapviesr | |
oewmbtcbjqnphgkdylfapviysr | |
oewabtcxyqnzhgkdylfabviusr | |
oewmbtcxhknzhgkdylfapviusd | |
ozwmbtcljqnzhgkdylfapviksr | |
tewmbtcxjqnzhgkdylfaxvqusr | |
oewmbtcxrqnzhgkdytfapvrusr | |
ohwmbtcxjcnzhgkdyifapviusr | |
oewmbpcxjqnzhwkdylfaphiusr | |
oedmbtcxjqnzhgnbylfapviusr | |
oewmbocxjqnehgkdylfapvbusr | |
oeymbtcxjqezegkdylfapviusr | |
oewmbtcxjqnzhgkdllferviusr | |
oewmbtcxjqnzhgkwmlfawviusr | |
oewmbtcxienzhgkdyzfapviusr | |
mewmbtcxjqnzhqkdylfapviwsr | |
oewmbtcxjqnztgkmylfapvdusr | |
ouwmbtcxjqnzhokdylpapviusr | |
oewmctcxjqhzhgmdylfapviusr | |
oewmbtcyjqnzhmkdylfarviusr | |
oewmbtcxjqnzhgkdpnfzpviusr | |
oewmptcxjqnzhgkdylkapviulr | |
nefmbtcxsqnzhgkdylfapviusr | |
oewmbtcxwqnzhgkdilfapvizsr | |
eewmbtcxjqwzhghdylfapviusr | |
oewmbtixmqnzhgkjylfapviusr | |
okwmbtcdzqnzhgkdylfapviusr | |
oewmbtxxjrnzigkdylfapviusr | |
oewmdycxjqnzhekdylfapviusr | |
oewmutcxjqnzhgkdylfapsiuqr | |
oewmbacxjqnzrgkdrlfapviusr | |
oewmbtcxpqnzhmkdylfapciusr | |
oewabtcxjqnzhgkdyrcapviusr | |
oswmbtcxjqnzhgkdrxfapviusr | |
gewmbtcnjqnzhgkdylvapviusr | |
newmbtcxjwnzfgkdylfapviusr | |
lewmbtcxjqnzhgkdylfaptiujr | |
oewwbtcxjqndhgkdylfapiiusr | |
oewmbtcxjqnzhggdylfapvqmsr | |
lewmbtcxjqnzhgkhllfapviusr | |
oewmbtocjqnzhgkdylfapvhusr | |
oedmbtcxjqnzhgkdyhfapviusb | |
oewmbtcxjqnzhgkdylfajvaosr | |
zewmbtcxjqnzhgkdylfapvsssr | |
oewmbthxjqnzhskdylfapviuqr | |
yewmrtcvjqnzhgkdylfapviusr | |
oewmbtctjqnzhgkdylfabvhusr | |
oesmstcxjqnzhgkdylfapqiusr | |
oewmbtcxjqnzzgkdylfopiiusr | |
otwmbtzxjqnzhgkdylfaxviusr | |
ouwmbxcxjqnzhgkdylfapvnusr | |
oewmbtcxjqezhgedylfapvsusr | |
oesmhtcsjqnzhgkdylfapviusr | |
oewdbtcxjqnzhgkdilfapvifsr | |
oewmbtcxjqnzhgudynfamviusr | |
qewhbtcxjqnzhgkdyxfapviusr | |
oewmbzcxjqtzhgkdylfapvitsr | |
oewmbtccjqzzhgkaylfapviusr | |
jewmbtcxmqnzhlkdylfapviusr | |
oewmbtcxjqbzhgkdnlfapviusp | |
oeimbtcdjqnzhgkdylfapviuer | |
oewtbtcxjqnihgkdylfahviusr | |
oewmbtcxhqnzhgkdylfapdiudr | |
oefmbtcxjqyshgkdylfapviusr | |
oewmbtcxjqnzhgkfglfapviusx | |
oecmbocxjqnzhgkdmlfapviusr | |
oewmbtcxjqnzhghdylfavviuhr | |
oewmbmcxiqnzhgkpylfapviusr | |
oewmbtcnjqnzhgkrylfanviusr | |
oewmbocxjqnzhzkdllfapviusr | |
eewmbtckjqnzhgkdylfapviusg | |
oewmbtcrjqqzhgkdylfapvigsr | |
oewmbtcxjqazhgfdylfapjiusr | |
oetmbtcxjqnzhgldylfapviqsr | |
oewbbtcxjqnzlgkdylfapviuse | |
oewmbtcxjqnzhglbolfapviusr | |
oewmbtcxjqnzcgkdylfapviuhy | |
oelmbtcxjqfzhgkdylaapviusr | |
oojmbycxjqnzhgkdylfapviusr | |
oewmbtrxjqnrhgkdylfapniusr | |
oewmbtcxjqnzhgkyyhfapviuso | |
oewabtcxjqnzhskdylfapviusx | |
oewmbtcrjqnmhgkdylfapvnusr | |
oewmbtcxjqrzhgkdylfapvpuss | |
oewmbtcxhqnzwgkddlfapviusr | |
kewmbtcxjqnzhgkyylfajviusr | |
oswmbtcxjqnzhgkdjlfapviuss | |
onwmbtcxjqnchgkdylfapvpusr | |
oeymbtcxjqnxhikdylfapviusr | |
oewmblcdjqnzhgkdylfapviysr | |
oewmbtcxeqczhgudylfapviusr | |
oewmbpgxjqnzhgkdylfapfiusr | |
ohwmwtcxjqnzhgkdylftpviusr | |
zebmbtuxjqnzhgkdylfapviusr | |
]] | |
return Input |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment