summaryrefslogtreecommitdiffstats
path: root/12/solution.py
diff options
context:
space:
mode:
Diffstat (limited to '12/solution.py')
-rw-r--r--12/solution.py25
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))