Day 12 - Advent of Code 2015

Working solutions for the day 12 puzzles.

Part One

""" day_12_01.py """

# usage: python3 day_12_01.py < input

import json
import sys


def sum_integers(data):
    """ unpack json structure summing integers """
    if isinstance(data, int):
        return data

    total = 0
    if isinstance(data, list):
        for i in data:
            total += sum_integers(i)
    elif isinstance(data, dict):
        for i in data:
            total += sum_integers(data[i])
    return total


data_pack = json.load(sys.stdin)
print(sum_integers(data_pack))

Part Two

""" day_12_02.py """

# usage: python3 day_12_02.py < input

import json
import sys


def sum_integers(data):
    """ unpack json structure summing integers """
    if isinstance(data, int):
        return data

    total = 0
    if isinstance(data, list):
        for i in data:
            total += sum_integers(i)
    elif isinstance(data, dict):
        if 'red' in data.values():
            return 0
        for i in data:
            total += sum_integers(data[i])
    return total


data_pack = json.load(sys.stdin)
print(sum_integers(data_pack))