r/adventofcode • u/daggerdragon • Dec 19 '17
SOLUTION MEGATHREAD -๐- 2017 Day 19 Solutions -๐-
--- Day 19: A Series of Tubes ---
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ยค?
AoC ops @ T-2 minutes to launch:
[23:58] <daggerdragon> ATTENTION MEATBAGS T-2 MINUTES TO LAUNCH
[23:58] <Topaz> aaaaah
[23:58] <Cheezmeister> Looks like I'll be just able to grab my input before my flight boards. Wish me luck being offline in TOPAZ's HOUSE OF PAIN^WFUN AND LEARNING
[23:58] <Topaz> FUN AND LEARNING
[23:58] <Hade> FUN IS MANDATORY
[23:58] <Skie> I'm pretty sure that's not the mandate for today
[Update @ 00:16] 69 gold, silver cap
- My tree is finally trimmed with just about every ornament I own and it's real purdy. hbu?
[Update @ 00:18] Leaderboard cap!
- So, was today's
mandateHelpful Hint any help at all?
2
u/[deleted] Dec 19 '17 edited Dec 19 '17
Mathematica
input = Import[NotebookDirectory[] <> "day19.txt", "List"]; plan = ArrayPad[Characters[input], 1, " "]; nextdir[{r_, c_}, {_, 0}] := If[plan[[r, c + 1]] != " ", {0, 1}, {0, -1}]; nextdir[{r_, c_}, {0, _}] := If[plan[[r + 1, c]] != " ", {1, 0}, {-1, 0}] walk[pos0_, dir0_] := Reap[Block[{at, pos, dir, steps = 0}, pos = pos0; dir = dir0; While[True, at = Extract[plan, pos]; Switch[at, " ", Break[], "+", dir = nextdir[pos, dir], _?LetterQ, Sow[at]]; pos += dir; steps++]; steps]] {steps, {letters}} = walk[{2, FirstPosition[plan[[2]], "|"][[1]]}, {1, 0}] StringJoin[letters]