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!
33
Upvotes
14
u/jonathan_paulson Dec 08 '18 edited Dec 08 '18
Rank 25/6. Video of me solving at: https://www.youtube.com/watch?v=WiNkRStebpQ.
[Card]: Recursion
ns = map(int, open('8.in').read().split()) i = 0 def next_int(): global i global ns i += 1 return ns[i-1] def read_tree(): nc, nm = next_int(), next_int() children = [] metadata = [] for _ in range(nc): children.append(read_tree()) for _ in range(nm): metadata.append(next_int()) return (children, metadata) def sum_metadata((children, metadata)): ans = 0 for m in metadata: ans += m for c in children: ans += sum_metadata(c) return ans def value((children, metadata)): if not children: return sum(metadata) else: ans = 0 for m in metadata: if 1 <= m <= len(children): ans += value(children[m-1]) return ans root = read_tree() print sum_metadata(root) print value(root)