Cleaned up Day 3
This commit is contained in:
parent
dd53bb6cde
commit
b76699fca6
2 changed files with 23 additions and 29 deletions
|
@ -3,30 +3,25 @@ io.input(file)
|
||||||
|
|
||||||
score = 0
|
score = 0
|
||||||
|
|
||||||
for line in file:lines() do
|
function find_duplicates(first, second)
|
||||||
local first = string.sub(line, 1, #line/2)
|
|
||||||
local second = string.sub(line, #line/2 + 1, #line)
|
|
||||||
print(#first)
|
|
||||||
print(#second)
|
|
||||||
for i = 1, #first do
|
for i = 1, #first do
|
||||||
local char = string.sub(first, i, i)
|
local char = string.sub(first, i, i)
|
||||||
|
|
||||||
if string.match(second, char) then
|
if string.match(second, char) then
|
||||||
print(char)
|
|
||||||
if char == string.upper(char) then
|
if char == string.upper(char) then
|
||||||
--print(string.byte(char) - string.byte("A") + 27)
|
return string.byte(char) - string.byte("A") + 27
|
||||||
score = score + string.byte(char) - string.byte("A") + 27
|
|
||||||
goto continue
|
|
||||||
elseif char == string.lower(char) then
|
elseif char == string.lower(char) then
|
||||||
--print(string.byte(char) - string.byte("a"))
|
return string.byte(char) - string.byte("a") + 1
|
||||||
score = score + string.byte(char) - string.byte("a") + 1
|
|
||||||
goto continue
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
::continue::
|
for line in file:lines() do
|
||||||
|
local first = string.sub(line, 1, #line/2)
|
||||||
|
local second = string.sub(line, #line/2 + 1, #line)
|
||||||
|
|
||||||
|
score = score + find_duplicates(first, second)
|
||||||
end
|
end
|
||||||
|
|
||||||
print(score)
|
print(score)
|
||||||
|
|
|
@ -8,26 +8,25 @@ for line in file:lines() do
|
||||||
table.insert(data, line)
|
table.insert(data, line)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function find_duplicates(one, two, three)
|
||||||
|
for i = 1, #one do
|
||||||
|
local char = string.sub(one, i, i)
|
||||||
|
if string.match(two, char) and string.match(three, char) then
|
||||||
|
if char == string.upper(char) then
|
||||||
|
return string.byte(char) - string.byte("A") + 27
|
||||||
|
elseif char == string.lower(char) then
|
||||||
|
return string.byte(char) - string.byte("a") + 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
for i = 1, #data/3 do
|
for i = 1, #data/3 do
|
||||||
local one = data[(i-1)*3+1]
|
local one = data[(i-1)*3+1]
|
||||||
local two = data[(i-1)*3+2]
|
local two = data[(i-1)*3+2]
|
||||||
local three = data[(i-1)*3+3]
|
local three = data[(i-1)*3+3]
|
||||||
|
|
||||||
for n = 1, #one do
|
score = score + find_duplicates(one, two, three)
|
||||||
local char = string.sub(one, n, n)
|
|
||||||
if string.match(two, char) and string.match(three, char) then
|
|
||||||
if char == string.upper(char) then
|
|
||||||
score = score + string.byte(char) - string.byte("A") + 27
|
|
||||||
goto continue
|
|
||||||
elseif char == string.lower(char) then
|
|
||||||
score = score + string.byte(char) - string.byte("a") + 1
|
|
||||||
goto continue
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
::continue::
|
|
||||||
end
|
end
|
||||||
|
|
||||||
print(score)
|
print(score)
|
||||||
|
|
Reference in a new issue