Initial commit
This commit is contained in:
62
10.jl
Normal file
62
10.jl
Normal file
@@ -0,0 +1,62 @@
|
||||
using Pkg
|
||||
Pkg.add("Match")
|
||||
using Match
|
||||
|
||||
include("utils.jl")
|
||||
|
||||
function corrupt(line)
|
||||
first, rest... = line
|
||||
check = [first]
|
||||
for char in rest
|
||||
if char in "<{[("
|
||||
push!(check, char)
|
||||
else
|
||||
match, score = @match char begin
|
||||
'>' => ('<', 25137)
|
||||
'}' => ('{', 1197)
|
||||
']' => ('[', 57)
|
||||
')' => ('(', 3)
|
||||
end
|
||||
if last(check) == match
|
||||
pop!(check)
|
||||
else
|
||||
return score
|
||||
end
|
||||
end
|
||||
end
|
||||
0
|
||||
end
|
||||
|
||||
function solution10_1()
|
||||
sum(map(corrupt, non_empty_lines("10.data")))
|
||||
end
|
||||
|
||||
function fix(line)
|
||||
first, rest... = line
|
||||
check = [first]
|
||||
for char in rest
|
||||
if char in "<{[("
|
||||
push!(check, char)
|
||||
else
|
||||
pop!(check)
|
||||
end
|
||||
end
|
||||
value = 0
|
||||
for char in reverse(check)
|
||||
value *= 5
|
||||
value += @match char begin
|
||||
'<' => 4
|
||||
'{' => 3
|
||||
'[' => 2
|
||||
'(' => 1
|
||||
end
|
||||
end
|
||||
value
|
||||
end
|
||||
|
||||
function solution10_2()
|
||||
values = sort(map(fix, filter(line->corrupt(line)==0, collect(non_empty_lines("10.data")))))
|
||||
values[div(length(values), 2)+1]
|
||||
end
|
||||
|
||||
solution10_2()
|
||||
Reference in New Issue
Block a user