def part01(path: str):

    run_testsuite(Part01Test)

    with open(path, 'r') as f:
        checksum = calc_checksum(f)

    print('- Part01 Answer:', checksum)
def part02(path: str):

    run_testsuite(Part02Test)

    with open(path, 'r') as f:
        commons = get_commons(*find_correct_pair(combinations(f, 2)))

    print('- Part02 Answer:', commons)
def part01(path: str):

    run_testsuite(Part01Test)

    with open(path, 'r') as f:
        result_freq = sum(int(line.strip()) for line in f)

    print('- Part01 Answer:', result_freq)
def part02(path: str):

    run_testsuite(Part02Test)

    with open(path, 'r') as f:
        repeated = find_repeated(int(line.strip()) for line in f)

    print('- Part02 Answer:', repeated)
def part02(path: str):

    run_testsuite(Part02Test)

    with open(path, 'r') as f:
        letters = f.read().strip()

    shortest_length = find_shortest_polymer(letters)

    print('- Part02 Answer:', shortest_length)
def part01(path: str):

    run_testsuite(Part01Test)

    with open(path, 'r') as f:
        letters = f.read().strip()

    remaining = fulling_reaction(gen_linked_list(letters))

    print('- Part01 Answer:', len(remaining))