Day 19 - Advent of Code 2015

Working solutions for the day 19 puzzles.

Part One

""" day_19_01.py """

# usage: python3 day_19_01.py < input


def generate(seed_molecule, rules_arg):
    """ produce next molecules from seed molecule using rules """
    next_molecules = set()
    for key, value in rules_arg:
        start = 0
        while True:
            i = seed_molecule.find(key, start)
            if i == -1:
                break
            next_molecules.add(seed_molecule[:i] + value +
                               seed_molecule[i + len(key):])
            start = i + len(key)
    return next_molecules


rules = []

while rule := input():
    rules.append(rule.split(' => '))

molecule = input()

molecules = generate(molecule, rules)
print(len(molecules))

Part Two