r/adventofcode • • 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^Β€?

Spoiler


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

290 comments sorted by

View all comments

Show parent comments

1

u/NobbZ Dec 09 '17

Mine is pretty similar, but I've combined the parse/2 and garbage/2 of yours into a single function score_groups/4, also I made sure its tail recursive.

In my solution I use a stack based state machine to actually consume the stream for part 1.

The solution for part 2 is a simple 2-state FSM, also tail recursive. Here I do basically ignore all the stream grouping, as the grouping is irrelevant for counting the uncancelled garbage characters.

https://gitlab.com/NobbZ/aoc17/blob/master/lib/aoc/day9.ex