diff options
Diffstat (limited to '12/solution.py')
-rw-r--r-- | 12/solution.py | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/12/solution.py b/12/solution.py new file mode 100644 index 0000000..f4162fb --- /dev/null +++ b/12/solution.py @@ -0,0 +1,25 @@ +from json import load + +def part1(data) -> int: + if type(data) is list: + return sum(part1(d) for d in data) + elif type(data) is dict: + return sum(part1(v) for k, v in data.items()) + if type(data) is int: + return data + return 0 + +def part2(data) -> int: + if type(data) is list: + return sum(part2(d) for d in data) + elif type(data) is dict and 'red' not in data.values(): + return sum(part2(v) for k, v in data.items()) + if type(data) is int: + return data + return 0 + +if __name__ == '__main__': + with open('input') as f: + d = load(f) + print(part1(d)) + print(part2(d)) |