From 2b107ba91d4f89f8eef6db95f21ea10dbd329745 Mon Sep 17 00:00:00 2001 From: Lucidiot Date: Sun, 17 Nov 2019 13:43:54 +0100 Subject: [PATCH] 2015 day 12 --- 2015/12/part1.py | 16 ++++++++++++++++ 2015/12/part2.py | 19 +++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100755 2015/12/part1.py create mode 100755 2015/12/part2.py diff --git a/2015/12/part1.py b/2015/12/part1.py new file mode 100755 index 0000000..1f6a797 --- /dev/null +++ b/2015/12/part1.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python3 +# jq --stream 'select(length >= 2)|.[1]|numbers' | paste -sd+ | bc -l +import json +import sys + +total = 0 + +def int_sum(value): + global total + parsed = int(value) + total += parsed + return parsed + +json.load(sys.stdin, parse_int=int_sum) + +print(total) diff --git a/2015/12/part2.py b/2015/12/part2.py new file mode 100755 index 0000000..a9fa865 --- /dev/null +++ b/2015/12/part2.py @@ -0,0 +1,19 @@ +#!/usr/bin/env python3 +import json +import sys + + +def get_numbers(data): + if isinstance(data, int): + yield data + elif isinstance(data, dict): + if 'red' in data.keys() or 'red' in data.values(): + return + for value in data.values(): + yield from get_numbers(value) + elif isinstance(data, list): + for item in data: + yield from get_numbers(item) + + +print(sum(get_numbers(json.load(sys.stdin))))