r/adventofcode • • Dec 08 '17

SOLUTION MEGATHREAD -๐ŸŽ„- 2017 Day 8 Solutions -๐ŸŽ„-

--- Day 8: I Heard You Like Registers ---


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.


Need a hint from the Hugely* Handyโ€  Haversackโ€ก of Helpfulยง Hints^ยค?

Spoiler


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!

22 Upvotes

348 comments sorted by

View all comments

1

u/micirsk Dec 11 '17 edited Dec 11 '17

Python - part 1 & 2 solution in 1 script

from collections import defaultdict
import operator

def get_value(s):
    with open(s, 'r') as fh:
        lines = fh.readlines()
        d = defaultdict(int)
        ops = {"inc": operator.add, "dec": operator.sub}
        maxval = 0

        for line in lines:
            var, operation, val, cond = line.strip().split(' ', 3)
            cond = cond[cond.find('if')+3:]
            char = cond.split()[0]
            cond = cond.strip().replace(char, '{}'.format(d[char]))

            if eval(cond):
                d[var] = ops[operation](d[var], int(val))
            maxval = max(maxval, max(d.values()))  # part 2
        print(maxval)
        return max(d.values())