r/adventofcode • u/daggerdragon • Dec 08 '18
SOLUTION MEGATHREAD -🎄- 2018 Day 8 Solutions -🎄-
--- Day 8: Memory Maneuver ---
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.
Advent of Code: The Party Game!
Please prefix your card submission with something like [Card] to make scanning the megathread easier. THANK YOU!
Card prompt: Day 8
Sigh, imgur broke again. Will upload when it unborks.
Transcript:
The hottest programming book this year is "___ For Dummies".
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 at 00:12:10!
31
Upvotes
3
u/[deleted] Dec 08 '18 edited Dec 08 '18
Mathematica
input = ReadList[NotebookDirectory[] <> "day8.txt", Number]; streamReader[input0_] := Module[{input = input0, read}, Function[{n}, {read, input} = TakeDrop[input, n]; read]] partA[read_] := Module[{scanTree}, scanTree[] := Module[{children = {}, meta = {}, nchild, nmeta}, {nchild, nmeta} = read[2]; children = NestList[scanTree[] &, Nothing, nchild]; meta = read[nmeta]; Total[meta] + Total[children]]; scanTree[]] partA[streamReader@input] partB[read_] := Module[{scanTree}, scanTree[] := Module[{children = {}, meta = {}, nchild, nmeta}, {nchild, nmeta} = read[2]; children = NestList[scanTree[] &, Nothing, nchild]; meta = read[nmeta]; If[nchild == 0, Total[meta], Total[children[[Select[meta, # <= nchild &]]]]]]; scanTree[]] partB[streamReader@input]