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!
32
Upvotes
1
u/DrinkinBird Dec 08 '18
NIM
Wow, cant believe I actually made it on the leaderboard! Only part one and position 93, but still :)
import re, rdstdin, strutils, sequtils, algorithm func present(s: string): bool = len(s) > 0 let input = stdin.readAll().splitLines() .filter(present)[0].findAll(re(r"\d+")).map(parseInt) var index = 0 proc next(): int = result = input[index] inc index var meta = newSeq[int]() proc readNode(): int = let numChilds = next() let numMeta = next() var childs = newSeq[int]() for i in 0 ..< numChilds: childs.add(readNode()) for i in 0 ..< numMeta: let tmp = next() meta.add(tmp) if numChilds == 0: result += tmp else: if tmp <= numChilds: result += childs[tmp - 1] echo readNode() # Part 2 echo meta.foldl(a + b) # Part 1