예제 #1
0
def _main():
    with open(asset("day18.txt")) as file:
        cave = Cave(file)

    print("Part 1:", cave.min_steps())

    with open(asset("day18_part2.txt")) as file:
        cave = Cave(file)

    print("Part 2:", cave.min_steps())
예제 #2
0
def _main():
    with open(asset("day21.txt")) as file:
        program = [int(part) for part in file.read().split(',')]

    print("Part 1:", _run_assembler(program, ASSEMBLER0))

    print("Part 2:", _run_assembler(program, ASSEMBLER1))
예제 #3
0
def _main():
    with open(asset("day1.txt")) as file:
        mass = [int(line) for line in file]

    fuel = sum([fuelFor(m) for m in mass])
    print("part1:", fuel)

    fuel = sum([totalFuelFor(m) for m in mass])
    print("part2:", fuel)
예제 #4
0
파일: day14.py 프로젝트: matajoh/aoc_2019
def _main():
    with open(asset("day14.txt")) as file:
        factory = Nanofactory.parse(file.readlines())

    ore_needed = factory.compute_ore_for_fuel()
    print("Part 1:", ore_needed)

    total_fuel = factory.compute_fuel_for_ore(1000000000000)
    print("Part 2:", total_fuel)
예제 #5
0
def _main():
    with open(asset("day15.txt")) as file:
        program = [int(code) for code in file.read().split(',')]

    robot = RepairDrone(program)
    sector = robot.explore()
    sector.draw()
    print("Part 1:", sector.steps_to_oxygen())
    print("Part 2:", sector.fill())
예제 #6
0
def _main():
    with open(asset("day23.txt")) as file:
        program = [int(part) for part in file.read().split(',')]

    network = Network(program)
    print("Part 1:", network.part1())

    network.reset()
    print("Part 2:", network.part2())
예제 #7
0
파일: day22.py 프로젝트: matajoh/aoc_2019
def _main():
    with open(asset("day22.txt")) as file:
        shuffles = [Shuffle.parse(line) for line in file]

    deck = Deck(10007)
    print("Part 1:", deck.index_after_shuffle(shuffles, 1, 2019))

    deck = Deck(119315717514047)
    print("Part 2:", deck.card_after_shuffle(shuffles, 101741582076661, 2020))
예제 #8
0
파일: day16.py 프로젝트: matajoh/aoc_2019
def _main():
    with open(asset("day16.txt")) as file:
        original_signal = file.read()

    signal = fft(original_signal, 100)
    signal = "".join([str(val) for val in signal[:8]])
    print("Part 1:", signal)

    signal = fft(original_signal, 100, True, 10000)
    print("Part 2:", signal)
예제 #9
0
def _main():
    with open(asset("day10.txt")) as file:
        points = parse_points(file)

    _, rays, num_seen = find_best_position(points)
    print("Part 1:", num_seen)

    fire_order = fire_laser(rays)
    point200 = fire_order[199]
    print("Part 2:", point200.x * 100 + point200.y)
예제 #10
0
def _main():
    with open(asset("day5.txt")) as file:
        memory = [int(value) for value in file.read().split(',')]

    computer = Computer(memory, verbose=True)

    print("Part 1:")
    computer.run(inputs=[1])

    print("Part 2:")
    computer.run(inputs=[5])
예제 #11
0
def _main():
    with open(asset("day3.txt")) as file:
        dir0, dir1 = file

    wire0, wire1 = parse_wires(dir0, dir1)
    points = find_intersections(wire0, wire1)
    min_dist = find_min_dist(points)
    print("Part 1:", min_dist)

    min_steps = find_min_steps(wire0, wire1, points)
    print("Part 2:", min_steps)
예제 #12
0
def _main():
    with open(asset("day12.txt")) as file:
        initial_state = [Vector.parse(line) for line in file]

    moons = [Moon(pos) for pos in initial_state]

    energy = _simulate_movement(moons, 1000)
    print("Part 1:", energy)

    reset_time = _find_reset_time(moons, 300000)
    print("Part 2:", reset_time)
예제 #13
0
파일: day17.py 프로젝트: matajoh/aoc_2019
def _main():
    with open(asset("day17.txt")) as file:
        program = [int(part) for part in file.read().split(',')]

    text = _ascii(program)

    scaffolds, robot = _parse_scaffolds(text)
    print("Part 1:", _sum_of_alignment_parameters(scaffolds))

    robot.follow_scaffolds(scaffolds)
    routine = Routine.create(robot.commands)
    print("Part 2:", routine.run(program))
예제 #14
0
def _main():
    with open(asset("day8.txt")) as file:
        image = parse_image(file.read(), 6, 25)

    max_zero_row = np.argmin(count_by_layer(image, 0))
    num_ones = count_by_layer(image, 1, max_zero_row)
    num_twos = count_by_layer(image, 2, max_zero_row)
    print("Part 1:", num_ones * num_twos)

    image = collapse(image)
    print("Part 2:")
    for line in image:
        print("".join(['#' if value else '.' for value in line]))
예제 #15
0
def _main():
    with open(asset("day25.txt")) as file:
        program = [int(part) for part in file.read().split(',')]

    computer = Computer(program)
    commands = [
        "south", "take mouse", "north", "west", "north", "north", "north",
        "west", "take semiconductor", "east", "south", "west", "south",
        "take hypercube", "north", "east", "south", "west", "take antenna",
        "west", "south", "south", "south"
    ]

    computer.write_ascii("\n".join(commands) + '\n')
    while not computer.is_halted:
        while not computer.num_outputs and not computer.is_halted:
            computer.step()

        if computer.num_outputs:
            computer.print_ascii()
예제 #16
0
파일: day24.py 프로젝트: matajoh/aoc_2019
def _main():
    with open(asset("day24.txt")) as file:
        lines = list(file)

    print("Part 1:", find_first_repeat(lines))
    print("Part 2:", simulate_recursive(lines, 200))
예제 #17
0
파일: day20.py 프로젝트: matajoh/aoc_2019
def _main():
    with open(asset("day20.txt")) as file:
        maze = DonutMaze(list(file))

    print("Part 1:", maze.min_steps())
    print("Part 2:", maze.min_steps_recursive())
예제 #18
0
def _main():
    with open(asset("day7.txt")) as file:
        program = [int(value) for value in file.read().split(',')]

    _part1(program)
    _part2(program)
예제 #19
0
파일: day6.py 프로젝트: matajoh/aoc_2019
def _main():
    with open(asset("day6.txt")) as file:
        com = Body.parse(file.read())

    print("part1:", com.count_orbits(0))
    print("part2:", com.find_shortest_transfer("YOU", "SAN"))