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