示例#1
0
def main() -> None:
    """Determine path through a map of trees."""
    # Part A
    test_answer = 7
    file = config.TestFile(test_answer)
    count = count_trees(file.contents, 3, 1)
    file.test(count)

    # Part B
    test_answer = 336  # = 2 * 7 * 3 * 4 * 2
    file = config.TestFile(test_answer)
    slopes = [
        (1, 1),
        # (3, 1), # This slope is already calculated.
        # Rather than calculate the count again, just multiply results from
        # the other slopes onto the existing count.
        (5, 1),
        (7, 1),
        (1, 2),
    ]
    for slope in slopes:
        count *= count_trees(file.contents, *slope)
    file.test(count)

    # Part A
    file = config.File()
    count = count_trees(file.contents, 3, 1)
    config.log_part_info('A', count)
    for slope in slopes:
        count *= count_trees(file.contents, *slope)
    config.log_part_info('B', count)
示例#2
0
def main() -> None:
    """Process boarding passes."""
    # Part A only
    test_answer = [
        (44, 5, 357),  # FBFBBFFRLR
        (70, 7, 567),  # BFFFBBFRRR
        (14, 7, 119),  # FFFBBBFRRR
        (102, 4, 820)  # BBFFBBFRLL
    ]
    file = config.TestFile(test_answer)
    tests = boarding_pass_to_data(file.contents)
    file.test(tests)

    file = config.File()
    result = boarding_pass_to_data(file.contents)
    config.log_part_info('A', get_highest_seat_id(result))

    # Part B
    result = find_empty_seat_id(result)
    config.log_part_info('B', result)
示例#3
0
文件: a.py 项目: cj-wong/advent
def main() -> None:
    """Process port data."""
    # Part A
    test_answer = 127
    file = config.TestFile(test_answer, to_type=int)
    test = check_data_for_invalid(file.contents, preamble_size=5)
    file.test(test)
    # Part B
    file.answer = 62
    test = get_range_sums_to_invalid(file.contents, test)
    test = min(test) + max(test)
    file.test(test)

    # Part A
    file = config.File(to_type=int)
    result = check_data_for_invalid(file.contents)
    config.log_part_info('A', result)
    # Part B
    result = get_range_sums_to_invalid(file.contents, result)
    result = min(result) + max(result)
    config.log_part_info('B', result)
示例#4
0
文件: a.py 项目: cj-wong/advent
def main() -> None:
    """Confirm the bus schedule."""
    # Part A
    test_answer = 295  # bus 59 * 5 minutes
    file = config.TestFile(test_answer)
    test = find_soonest_bus(file.contents)
    file.test(test)

    # Part B
    # file.answer = 1068781
    # test = find_contest_pattern(file.contents)
    # file.test(test)

    # Part A
    file = config.File()
    result = find_soonest_bus(file.contents)
    config.log_part_info('A', result)

    # Part B
    result = find_contest_pattern(file.contents)
    config.log_part_info('B', result)
示例#5
0
def main() -> None:
    """Process game instructions."""
    # Part A
    test_answer = 5
    file = config.TestFile(test_answer)
    test = iterate_instructions_once(file.contents)
    file.test(test)

    file = config.File()
    result = iterate_instructions_once(file.contents)
    config.log_part_info('A', result)

    # Part B
    test_answer = 8
    file = config.TestFile(test_answer)
    test = replace_bad_op(file.contents)
    file.test(test)

    file = config.File()
    result = replace_bad_op(file.contents)
    config.log_part_info('B', result)
示例#6
0
def main() -> None:
    """Simulate the number game described in day 15."""
    # Part A
    test_answer = 436
    file = config.TestFile(test_answer)
    test = number_game(file.contents[0])
    file.test(test)

    # Part B
    file.answer = 175594
    test = number_game(file.contents[0], max_turns=30000000)
    file.test(test)

    # Part A
    file = config.File()
    result = number_game(file.contents[0])
    config.log_part_info('A', result)

    # Part B
    result = number_game(file.contents[0], max_turns=30000000)
    config.log_part_info('B', result)
示例#7
0
def main() -> None:
    """Check the number of valid passwords."""
    # Part A
    test_answer = 2  # Number of valid test passwords
    file = config.TestFile(test_answer)
    valid = validate(file.contents, 'a')
    file.test(valid)

    # Part B
    test_answer = 1  # Number of valid test passwords
    file = config.TestFile(test_answer)
    valid = validate(file.contents, 'b')
    file.test(valid)

    # Part A
    file = config.File()
    valid = validate(file.contents, 'a')
    config.log_part_info('A', valid)
    # Part B
    valid = validate(file.contents, 'b')
    config.log_part_info('B', valid)