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())
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))
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)
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)
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())
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())
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))
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)
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)
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])
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)
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)
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))
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]))
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()
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))
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())
def _main(): with open(asset("day7.txt")) as file: program = [int(value) for value in file.read().split(',')] _part1(program) _part2(program)
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"))