In [1]:
function process_stream(s)
i = 1
garbage = false
garbage_total = 0
group_level = 0
group_score = 0
while i <= endof(s)
c = s[i]
if c == '!'
i += 1
elseif garbage && c == '>'
garbage = false
elseif !garbage && c == '<'
garbage = true
elseif !garbage
if c == '{'
group_level += 1
elseif c == '}'
group_score += group_level
group_level -= 1
end
else
garbage_total += 1
end
i += 1
end
group_score, garbage_total
end
Out[1]:
In [2]:
process_stream("{{<ab>},{<ab>},{<ab>},{<ab>}}")
Out[2]:
In [3]:
process_stream("{{<a!>},{<a!>},{<a!>},{<ab>}}")
Out[3]:
In [4]:
process_stream("<{o\"i!a,<{i<a>")
Out[4]:
In [5]:
open("inputs/day9.txt") do fd
score = process_stream(readstring(fd))
end
Out[5]:
In [ ]: