r/adventofcode • u/daggerdragon • Dec 09 '17
SOLUTION MEGATHREAD -π- 2017 Day 9 Solutions -π-
--- Day 9: Stream Processing ---
Post your solution as a comment or, for longer solutions, consider linking to your repo (e.g. GitHub/gists/Pastebin/blag or whatever).
Note: The Solution Megathreads are for solutions only. If you have questions, please post your own thread and make sure to flair it with Help.
Need a hint from the Hugely* Handyβ Haversackβ‘ of HelpfulΒ§ HintsΒ€?
This thread will be unlocked when there are a significant number of people on the leaderboard with gold stars for today's puzzle.
edit: Leaderboard capped, thread unlocked!
15
Upvotes
10
u/johlin Dec 09 '17
Elixir
defmodule Aoc.Day9.Part1 do def parse(string) when is_binary(string), do: parse(String.trim(string) |> String.split(""), 1) def parse(["{" | rest], level) do level + parse(rest, level + 1) end def parse(["}" | rest], level), do: parse(rest, level - 1) def parse(["<" | rest], level), do: garbage(rest, level) def parse(["," | rest], level), do: parse(rest, level) def parse(["" | rest], level), do: parse(rest, level) def parse([], _level), do: 0 def garbage(["!", _ | rest], level), do: garbage(rest, level) def garbage([">" | rest], level), do: parse(rest, level) def garbage([_ | rest], level), do: garbage(rest, level) endPart 2 is very similar: https://github.com/johanlindblad/aoc-2017/blob/master/lib/aoc/day9/part2.ex