diff options
Diffstat (limited to '2020/07/puzzle-1.py')
-rwxr-xr-x | 2020/07/puzzle-1.py | 14 |
1 files changed, 3 insertions, 11 deletions
diff --git a/2020/07/puzzle-1.py b/2020/07/puzzle-1.py index da054b8..3c0d0e3 100755 --- a/2020/07/puzzle-1.py +++ b/2020/07/puzzle-1.py @@ -9,15 +9,12 @@ def holds_bag(innerbags: list[str]) -> bool: return False elif "shiny gold" in innerbags: return True - - for subbag in innerbags: - if holds_bag(bdict[subbag]): - return True + return any(holds_bag(bdict[subbag]) for subbag in innerbags) def main() -> None: global bdict - with open("input", "r") as f: + with open("input", "r", encoding="utf-8") as f: lines = f.readlines() for baginfo in lines: @@ -26,12 +23,7 @@ def main() -> None: # { bag_name: [contained_bag_1, containted_bag_2, ...] } bdict[data[0]] = [" ".join(b.split(" ")[-3:][:2]) for b in data[1].split(",")] - count = 0 - for bag in bdict: - if holds_bag(bdict[bag]): - count += 1 - - print(count) + print(sum(holds_bag(bdict[bag]) for bag in bdict)) if __name__ == "__main__": |