Mercurial > hg > aoc
diff 2017/day09/problem @ 34:049fb8e56025
Add problem statements and inputs
author | Jordi Gutiérrez Hermoso <jordigh@octave.org> |
---|---|
date | Tue, 09 Jan 2018 21:51:44 -0500 |
parents | |
children |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/2017/day09/problem @@ -0,0 +1,119 @@ +--- Day 9: Stream Processing --- + +A large stream blocks your path. According to the locals, it's not +safe to cross the stream at the moment because it's full of garbage. +You look down at the stream; rather than water, you discover that it's +a stream of characters. + +You sit for a while and record part of the stream (your puzzle input). +The characters represent groups - sequences that begin with { and end +with }. Within a group, there are zero or more other things, separated +by commas: either another group or garbage. Since groups can contain +other groups, a } only closes the most-recently-opened unclosed group +- that is, they are nestable. Your puzzle input represents a single, +large group which itself contains many smaller ones. + +Sometimes, instead of a group, you will find garbage. Garbage begins +with < and ends with >. Between those angle brackets, almost any +character can appear, including { and }. Within garbage, < has no +special meaning. + +In a futile attempt to clean up the garbage, some program has canceled +some of the characters within it using !: inside garbage, any +character that comes after ! should be ignored, including <, >, and +even another !. + +You don't see any characters that deviate from these rules. Outside +garbage, you only find well-formed groups, and garbage always +terminates according to the rules above. + +Here are some self-contained pieces of garbage: + + <>, empty garbage. + + <random characters>, garbage containing random characters. + + <<<<>, because the extra < are ignored. + + <{!>}>, because the first > is canceled. + + <!!>, because the second ! is canceled, allowing the > to + terminate the garbage. + + <!!!>>, because the second ! and the first > are canceled. + + <{o"i!a,<{i<a>, which ends at the first >. + +Here are some examples of whole streams and the number of groups they contain: + + {}, 1 group. + + {{{}}}, 3 groups. + + {{},{}}, also 3 groups. + + {{{},{},{{}}}}, 6 groups. + + {<{},{},{{}}>}, 1 group (which itself contains garbage). + + {<a>,<a>,<a>,<a>}, 1 group. + + {{<a>},{<a>},{<a>},{<a>}}, 5 groups. + + {{<!>},{<!>},{<!>},{<a>}}, 2 groups (since all but the last > are + canceled). + + +Your goal is to find the total score for all groups in your input. +Each group is assigned a score which is one more than the score of the +group that immediately contains it. (The outermost group gets a score +of 1.) + + {}, score of 1. + + {{{}}}, score of 1 + 2 + 3 = 6. + + {{},{}}, score of 1 + 2 + 2 = 5. + + {{{},{},{{}}}}, score of 1 + 2 + 3 + 3 + 3 + 4 = 16. + + {<a>,<a>,<a>,<a>}, score of 1. + + {{<ab>},{<ab>},{<ab>},{<ab>}}, score of 1 + 2 + 2 + 2 + 2 = 9. + + {{<!!>},{<!!>},{<!!>},{<!!>}}, score of 1 + 2 + 2 + 2 + 2 = 9. + + {{<a!>},{<a!>},{<a!>},{<ab>}}, score of 1 + 2 = 3. + +What is the total score for all groups in your input? + +Your puzzle answer was 12803. + +--- Part Two --- + +Now, you're ready to remove the garbage. + +To prove you've removed it, you need to count all of the characters +within the garbage. The leading and trailing < and > don't count, nor +do any canceled characters or the ! doing the canceling. + + <>, 0 characters. + + <random characters>, 17 characters. + + <<<<>, 3 characters. + + <{!>}>, 2 characters. + + <!!>, 0 characters. + + <!!!>>, 0 characters. + + <{o"i!a,<{i<a>, 10 characters. + +How many non-canceled characters are within the garbage in your puzzle +input? + +Your puzzle answer was 6425. + +Both parts of this puzzle are complete! They provide two gold stars: **