diff --git a/day7/day7.py b/day7/day7.py index 22b9cc2..8394706 100644 --- a/day7/day7.py +++ b/day7/day7.py @@ -27,24 +27,24 @@ def process_rules(rules): return rules_dict -def can_contain(rules, colour): +def parents_of(rules, colour): parents = set() for parent, children in rules.items(): if colour in children: parents.add(parent) - parents |= can_contain(rules, parent) + parents |= parents_of(rules, parent) return parents -def colour_contains(rules, colour): +def children_of(rules, colour): children = defaultdict(lambda: 0) for child_colour, child_num in rules[colour].items(): children[child_colour] += child_num - for col, num in colour_contains(rules, child_colour).items(): + for col, num in children_of(rules, child_colour).items(): children[col] += child_num * num return children if __name__ == '__main__': bag_rules = [rule.strip() for rule in sys.stdin.readlines()] rules = process_rules(bag_rules) - print(len(can_contain(rules, 'shiny gold'))) - print(sum(colour_contains(rules, 'shiny gold').values())) + print(len(parents_of(rules, 'shiny gold'))) + print(sum(children_of(rules, 'shiny gold').values()))