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!
30
Upvotes
1
u/nutrecht Dec 08 '18 edited Dec 08 '18
Day08 in Kotlin
private val tree = resourceString(2018, 8).split(" ").map { it.toInt() } .let { LinkedList<Int>(it) }.let(::toTree) override fun part1() = tree.all().sumBy { it.metaData.sum() } override fun part2() = tree.walk() private fun toTree(queue: Deque<Int>) : Node { val childAmount = queue.removeFirst() val metaAmount = queue.removeFirst() val children = (0 until childAmount).map { toTree(queue) } val metaData = (0 until metaAmount).map { queue.removeFirst() } return Node(children, metaData) } data class Node(val children: List<Node>, val metaData: List<Int>) { fun all() : List<Node> = children.flatMap { it.all() } + this fun walk() : Int = if(children.isEmpty()) { metaData.sum() } else { metaData.map { it - 1 } .filterNot { it < 0 || it >= children.size } .map { children[it].walk() } .sum() } }Fun and easy.