Exemple #1
0
def parse_day7_input(filename='input-d7.txt'):
    line_re = re.compile('^(?P<name>.+?) \((?P<weight>\d+)\)(?: -> (?P<children>.+))?$')
    data = list(read_input(
        filename,
        record_processor=compose(
            line_re.match,
            lambda m: m.groupdict(),
            lambda m: dict(
                m,
                weight=int(m['weight']),
                children=(m['children'].split(', ') if m['children'] else []),
            ),
        ),
        record_postvalidator=yes,
    ))
    return data
Exemple #2
0
from aoclib import read_input, yes, split_by_whitespace, compose, imap
from day6lib import reallocate

initial_banks = list(
    read_input(
        'input-d6.txt',
        record_processor=compose(split_by_whitespace, imap(int), list),
        record_postvalidator=yes,
    ))[0]

allocations, final_banks = reallocate(initial_banks)
print(len(allocations))
Exemple #3
0
from aoclib import read_input, split_by_whitespace, compose, imap

all_passphrases = list(read_input(
    'input-d4.txt',
    record_processor=compose(split_by_whitespace),
))

valid_passphrases = [
    phrase
    for phrase
    in all_passphrases
    if len(set(phrase)) == len(phrase)
]

print(len(valid_passphrases), len(all_passphrases))