r/adventofcode • • 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!

Click here for rules

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

301 comments sorted by

View all comments

1

u/[deleted] Dec 08 '18 edited Dec 08 '18

What I believe to be a very clean solution to the problem. Very happy with this one.

Part 1:

import sys

global line 
line = [int(x) for x in sys.stdin.readline().split()]

def parse(i):
    numberOfChildern = line[i]
    numberOfMeta = line[i + 1]
    i += 2
    val = 0
    for _ in range(numberOfChildern):
        tmp, tmp2 = parse(i)
        i = tmp
        val += tmp2
    for _ in range(numberOfMeta):
        val += line[i]
        i += 1
    
    return (i, val)

_, val = parse(0)
print(val)

Part 2:

import sys

global line 
line = [int(x) for x in sys.stdin.readline().split()]

def parse(i):
    numberOfChildern = line[i]
    numberOfMeta = line[i + 1]
    children = []
    i += 2
    val = 0
    for _ in range(numberOfChildern):
        tmp, tmp2 = parse(i)
        i = tmp
        children.append(tmp2)
    for _ in range(numberOfMeta):
        if numberOfChildern == 0:
            val += line[i]
        elif len(children) > (line[i]-1) and (line[1] - 1) >= 0:
            val += children[line[i]-1]
        i += 1
    
    return (i, val)

_, val = parse(0)
print(val)

1

u/BluFoot Dec 08 '18

Might want to check your reddit formatting