1
0
aoc-2020/7/part2.py
2020-12-10 15:09:10 +02:00

25 lines
598 B
Python

import re
rawRules = ""
with open("input.txt", "r") as f:
rawRules = f.read()
rules = {}
for rawRule in rawRules.split("\n"):
bags = re.findall(r"(\d+)? ?(\w+ \w+) bag", rawRule)
targetColor = bags[0][1]
rules[targetColor] = {}
if (bags[1][1] != "no other"):
for bag in bags[1:]:
rules[targetColor][bag[1]] = int(bag[0])
countMemo = {}
def getTotalBagCount(color):
if countMemo.get(color) == None:
countMemo[color] = 0
for bag in rules[color].items():
countMemo[color] += (getTotalBagCount(bag[0]) + 1) * bag[1]
return countMemo[color]
print(getTotalBagCount("shiny gold"))