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))))