Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- import re
- with open('Day8input.txt', 'r') as f:
- data = [s.strip() for s in f.read().splitlines()]
- register_regex = re.compile(r"([a-z]+) (dec|inc) (-?\d+) if ([a-z]+) ([><!=]+) ([-]?\d+)")
- registers = {} # Create dict of registers and values
- # First pass to find register names and set val to 0
- for line in data:
- mo = re.search(register_regex, line)
- rg_id = mo.groups()
- for x in (rg_id[0], rg_id[3]):
- if x not in registers:
- registers[x] = 0
- max_held = 0 # PART TWO
- # Second pass perform operations on registers according to puzzle instructions
- for line in data:
- mo = re.search(register_regex, line)
- # print(mo.groups())
- r = mo.groups()
- # print(r[3], registers[r[3]])
- # print(r[3:])
- if eval(' '.join([str(registers[r[3]]), r[4], r[5]])):
- if r[1] == 'inc':
- registers[r[0]] += int(r[2])
- elif r[1] == 'dec':
- registers[r[0]] -= int(r[2])
- # print(r[0], registers[r[0]], "\n")
- if max_held < max(registers.values()):
- max_held = max(registers.values())
- print(max(registers.values())) # PART ONE
- print(max_held)
Advertisement
Add Comment
Please, Sign In to add comment