示例#1
0
def day14_main():
    print("2020 AOC Challenge Day 14: Docking Data")
    input_path = path_join(directory_path, input_filename)
    raw_texts = read_file_line(input_path)
    ret = []

    for line in raw_texts:
        if line == "":
            continue
        split_lines = line.split(" = ")
        if MASK_KEY in split_lines[0]:
            ret.append((split_lines[0], split_lines[1]))
        else:
            number = int(split_lines[1])
            string = ""
            for ch in split_lines[0]:
                if ch.isalpha() or ch == "[" or ch == "]":
                    continue
                string += ch
            ret.append((int(string), number))

    part1_answer = problem_part1(ret)
    print("Part 1, Answer: {}".format(part1_answer))

    part2_answer = problem_part2(ret)
    print("Part 2, Answer: {}".format(part2_answer))
示例#2
0
def get_fresh_input():
    input_path = path_join(directory_path, input_filename)
    lines = read_file_line(input_path)
    numbers = lines[0].split(",")
    numbers = list(map(lambda x: int(x), numbers))

    return numbers
示例#3
0
def day4_main():
    print("2020 AOC Challenge Day 4: Passport Processing")
    input_path = path_join(directory_path, input_filename)
    raw_texts = read_file_line(input_path)
    pp = {}
    lines = []

    for i, line in enumerate(raw_texts):
        if not line:
            lines.append(pp)
            pp = {}
            continue
        split_line = line.split(" ")
        kv = list(map(lambda x: x.split(":"), split_line))
        for i in range(len(kv)):
            for j in range(1):
                key = kv[i][j]
                value = kv[i][j + 1]
                pp[key] = value

    part1_answer = problem_part1(lines)
    print("Part 1, Answer: {}".format(part1_answer))

    part2_answer = problem_part2(lines)
    print("Part 2, Answer: {}".format(part2_answer))
示例#4
0
def day2_main():
    input_path = path_join(directory_path, input_filename)
    lines = read_file_line(input_path)

    part1_answer = inventory_management_system_part1(lines)
    print("Part 1, Answer: {}".format(part1_answer))

    part2_answer = inventory_management_system_part2(lines)
    print("Part 2, Answer: {}".format(part2_answer))
示例#5
0
def day5_main():
    print("2020 AOC Challenge Day 4: Passport Processing")
    input_path = path_join(directory_path, input_filename)
    lines = read_file_line(input_path)

    part1_answer = problem_part1(lines)
    print("Part 1, Answer: {}".format(part1_answer))

    part2_answer = problem_part2(lines)
    print("Part 2, Answer: {}".format(part2_answer))
def day5_main():
    print("2019 AOC Challenge Day 5")
    input_path = path_join(directory_path, input_filename)
    lines = read_file_line(input_path)
    numbers = list(map(lambda x: int(x), lines[0].split(",")))

    print (len(numbers))

    part1_answer = problem_part1(numbers)
    print("Part 1, Answer: {}".format(part1_answer))
示例#7
0
def day10_main():
    print("2020 AOC Challenge Day 7: Handy Haversacks")
    input_path = path_join(directory_path, input_filename)
    raw_texts = read_file_line(input_path)
    lines = [int(x) for x in raw_texts if x != '']

    part1_answer = problem_part1(lines)
    print("Part 1, Answer: {}".format(part1_answer))

    part2_answer = problem_part2(lines)
    print("Part 2, Answer: {}".format(part2_answer))
def day6_main():
    print("2019 AOC Challenge Day 6")
    input_path = path_join(directory_path, input_filename)
    lines = read_file_line(input_path)
    orbits = [parse_line(line) for line in lines]

    part1_answer = problem_part1(orbits)
    print("Part 1, Answer: {}".format(part1_answer))

    part2_answer = problem_part2(orbits)
    print("Part 2, Answer: {}".format(part2_answer))
示例#9
0
def day11_main():
    print("2020 AOC Challenge Day 11: Seating System")
    input_path = path_join(directory_path, input_filename)
    raw_texts = read_file_line(input_path)
    lines = [list(x) for x in raw_texts if x != '']

    part1_answer = problem_part1(lines)
    print("Part 1, Answer: {}".format(part1_answer))

    part2_answer = problem_part2(lines)
    print("Part 2, Answer: {}".format(part2_answer))
示例#10
0
def day1_main():
    print("2019 AOC Challenge Day1")
    input_path = path_join(directory_path, input_filename)
    lines = read_file_line(input_path)
    fuels = list(map(lambda x: int(x), lines))

    part1_answer = rocket_equation_part1(fuels)
    print("Part 1, Answer: {}".format(part1_answer))

    part2_answer = rocket_equation_part2(fuels)
    print("Part 2, Answer: {}".format(part2_answer))
示例#11
0
def day7_main():
    print("2019 AOC Challenge Day 7")
    input_path = path_join(directory_path, input_filename)
    lines = read_file_line(input_path)
    lines = parse_input(lines)

    part1_answer = problem_part1(lines)
    print("Part 1, Answer: {}".format(part1_answer))

    part2_answer = problem_part2(lines)
    print("Part 2, Answer: {}".format(part2_answer))
示例#12
0
def day12_main():
    print("2020 AOC Challenge Day 12: Boaty McBoatFace")
    input_path = path_join(directory_path, input_filename)
    raw_texts = read_file_line(input_path)
    lines = [(x[0], int(x[1:])) for x in raw_texts if x != '']

    part1_answer = problem_part1(lines)
    print("Part 1, Answer: {}".format(part1_answer))

    part2_answer = problem_part2(lines)
    print("Part 2, Answer: {}".format(part2_answer))
示例#13
0
def day3_main():
    print("2019 AOC Challenge Day 3")
    input_path = path_join(directory_path, input_filename)
    lines = read_file_line(input_path)
    wire1, wire2 = lines[0].split(","), lines[1].split(",")
    
    part1_answer = problem_part1(wire1, wire2)
    print("Part 1, Answer: {}".format(part1_answer))

    part2_answer = problem_part2(wire1, wire2)
    print("Part 2, Answer: {}".format(part2_answer))
示例#14
0
def day1_main():
    print("2020 AOC Challenge Day 1: Report Repair")
    input_path = path_join(directory_path, input_filename)
    raw_texts = read_file_line(input_path)

    lines = [int(number) for number in raw_texts]

    part1_answer = problem_part1(lines)
    print("Part 1, Answer: {}".format(part1_answer))

    part2_answer = problem_part2(lines)
    print("Part 2, Answer: {}".format(part2_answer))
示例#15
0
def day13_main():
    print("2020 AOC Challenge Day 13: Shuttle Search")
    input_path = path_join(directory_path, input_filename)
    raw_texts = read_file_line(input_path)
    earliest_time = int(raw_texts[1])
    bus_times = [x for x in raw_texts[2].split(",")]

    part1_answer = problem_part1(earliest_time, bus_times)
    print("Part 1, Answer: {}".format(part1_answer))

    part2_answer = problem_part2(earliest_time, bus_times)
    print("Part 2, Answer: {}".format(part2_answer))
示例#16
0
def day1_main():
    input_path = path_join(directory_path, input_filename)
    lines = read_file_line(input_path)
    start = 0 

    calibrations = list(map(lambda x: int(x), lines))

    part1_answer = chronal_calibration_part1(calibrations, start)
    print("Part 1, Answer: {}".format(part1_answer))

    part2_answer = chronal_calibration_part2(calibrations, start)
    print("Part 2, Answer: {}".format(part2_answer))
示例#17
0
def day4_main():
    print("2019 AOC Challenge Day 4")
    input_path = path_join(directory_path, input_filename)
    lines = read_file_line(input_path)
    number_range = lines[0].split('-')
    num_min, num_max = int(number_range[0]), int(number_range[1])

    print(lines)

    part1_answer = problem_part1(num_min, num_max)
    print("Part 1, Answer: {}".format(len(part1_answer)))

    part2_answer = problem_part2(num_min, num_max)
    print("Part 2, Answer: {}".format(part2_answer))
示例#18
0
def day2_main():
    print("2020 AOC Challenge Day 2: Password Philosophy")
    input_path = path_join(directory_path, input_filename)
    raw_texts = read_file_line(input_path)
    lines = []
    
    for line in raw_texts:
        split_line = line.split(" ")
        split_line[1] = split_line[1][:-1]
        lines.append(split_line)

    part1_answer = problem_part1(lines)
    print("Part 1, Answer: {}".format(part1_answer))

    part2_answer = problem_part2(lines)
    print("Part 2, Answer: {}".format(part2_answer))
示例#19
0
def day8_main():
    print("2020 AOC Challenge Day 8: Handheld Halting")
    input_path = path_join(directory_path, input_filename)
    raw_texts = read_file_line(input_path)
    lines = []

    for line in raw_texts:
        if line == "":
            continue
        split_line = line.split(" ")
        lines.append((split_line[0], int(split_line[1])))

    part1_answer = problem_part1(lines)
    print("Part 1, Answer: {}".format(part1_answer))

    part2_answer = problem_part2(lines)
    print("Part 2, Answer: {}".format(part2_answer))
示例#20
0
def day15_main():
    print("2020 AOC Challenge Day 15: Docking Data")
    input_path = path_join(directory_path, input_filename)
    raw_texts = read_file_line(input_path)
    ret = None
    for line in raw_texts:
        if not line:
            continue
        ret = line.split(",")

    ret = [int(x) for x in ret]

    part1_answer = problem_part1(ret)
    print("Part 1, Answer: {}".format(part1_answer))

    part2_answer = problem_part2(ret)
    print("Part 2, Answer: {}".format(part2_answer))
示例#21
0
def day6_main():
    print("2020 AOC Challenge Day 6: Custom Custom")
    input_path = path_join(directory_path, input_filename)
    answers = read_file_line(input_path)
    lines = []
    people = []

    for answer in answers:
        if answer == "":
            lines.append(people)
            people = []
        else:
            people.append(answer)

    lines.append(people)

    part1_answer = problem_part1(lines)
    print("Part 1, Answer: {}".format(part1_answer))

    part2_answer = problem_part2(lines)
    print("Part 2, Answer: {}".format(part2_answer))
示例#22
0
def day16_main():
    print("2020 AOC Challenge Day 16: T i c k e t t r a n s l a t i o n")
    input_path = path_join(directory_path, input_filename)
    raw_texts = read_file_line(input_path)
    valid_ranges = []
    your_ticket = []
    nearby_tickets = []
    is_your_ticket = False
    is_near_ticket = False
    for line in raw_texts:
        if line == "":
            continue
        if not is_your_ticket and not is_near_ticket:
            if YOUR_TICKET in line:
                is_your_ticket = True
                continue
            split_line = line.split(":")
            split_range = split_line[1].split(" or ")
            split_number = [l.split("-") for l in split_range]
            temp = []
            for numbers in split_number:
                numbers = [int(x) for x in numbers]
                temp.append((numbers[0], numbers[1]))

            valid_ranges.append(temp)
        elif not is_near_ticket:
            your_ticket = [int(x) for x in line.split(",")]
            is_near_ticket = True
        else:
            if NEARBY_TICKET in line:
                continue
            near = [int(x) for x in line.split(",")]
            nearby_tickets.append(near)

    part1_answer = problem_part1(valid_ranges, nearby_tickets)
    print("Part 1, Answer: {}".format(part1_answer))

    part2_answer = problem_part2(valid_ranges, nearby_tickets, your_ticket)
    print("Part 2, Answer: {}".format(part2_answer))
示例#23
0
def day7_main():
    print("2020 AOC Challenge Day 7: Handy Haversacks")
    input_path = path_join(directory_path, input_filename)
    raw_texts = read_file_line(input_path)
    lines = []

    for line in raw_texts[1:]:
        split_line = line.split(" ")
        # Bag Source (Prefix color) and Destina
        source_bag = " ".join(split_line[:2])
        destination_bags = []
        if split_line[4] != "no":
            for i in range(4, len(split_line), 4):
                count = int(split_line[i])
                color = " ".join(split_line[i+1:i+3])
                destination_bags.append((count, color))
        lines.append([source_bag, destination_bags])

    part1_answer = problem_part1(lines)
    print("Part 1, Answer: {}".format(part1_answer))

    part2_answer = problem_part2(lines)
    print("Part 2, Answer: {}".format(part2_answer))