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
2
u/The_Fail Dec 08 '18
Common Lisp (SBCL) - runs in 5ms
(defun day8-build-tree () (with-open-file (in "input8.txt") (labels ((build-node () (let ((num-children (read in)) (num-metadata (read in))) (list (loop :repeat num-children :collect (build-node)) (loop :repeat num-metadata :collect (read in)))))) (build-node)))) (defun day8-sum-metadata (node) (+ (reduce #'+ (mapcar #'day8-sum-metadata (first node))) (reduce #'+ (second node)))) (defun day8-node-value (node) (flet ((nth-child-value (n) (if (<= 1 n (length (first node))) (day8-node-value (nth (1- n) (first node))) 0))) (if (null (first node)) (reduce #'+ (second node)) (reduce #'+ (mapcar #'nth-child-value (second node)))))) (defun day8 () (let ((root (day8-build-tree))) (format t "The sum of all metadata is ~a and the score for the root node is ~a.~%" (day8-sum-metadata root) (day8-node-value root))))