for x2 in range(len(data[y])): field = data[y2][x2] if (not (y2 == y and x2 == x) and field == '#'): angle2 = get_angle(x, x2, y, y2) if (angle2 == angle): print(x2, y2) data = Puzzle(year=2019, day=10).input_data # data = '#..\n.#.\n..#' # data = '.#..#\n.....\n#####\n....#\n...##' # data = '.#..#..###\n####.###.#\n....###.#.\n..###.##.#\n##.##.#.#.\n....###..#\n..#.#..#.#\n#..#.#.###\n.##...##.#\n.....#.#..' # data = '.#..##.###...#######\n##.############..##.\n.#.######.########.#\n.###.#######.####.#.\n#####.##.#.##.###.##\n..#####..#.#########\n####################\n#.####....###.#.#.##\n##.#################\n#####.##.###..####..\n..######..##.#######\n####.##.####...##..#\n.#####..#.######.###\n##...#.##########...\n#.##########.#######\n.####.#.###.###.#.##\n....##.##.###..#####\n.#.#.###########.###\n#.#.#.#####.####.###\n###.##.####.##.#..##' data = data.split('\n') result = data.copy() result = list(map(lambda x: list(x), result)) counts = [] for y in range(len(data)): for x in range(len(data[y])): # print("at "+str(x)+','+str(y)) field = data[y][x] if (field == '#'): angles = visible_astroid_angles(x, y, data) count = len(angles) if (count == 276): print(x) print(y) counts.append(count)
order = [ 'o', 'm', 'a', 'y', 'x', 'q', 'e', 'c', 'z', 'k', 't', 'h', 'l', 'g', 'i', 'u', 'j', 'd', 'w', 'r', 'f', 'v', 'p', 'n', 'b', 's' ] #7514 orig_maze = Puzzle(year=2019, day=18).input_data.split('\n') start_x, start_y = find_object('@', orig_maze) offset = 1 while (True): broke = False index1 = random.randrange(0, len(order) - 1, 1) index2 = random.randrange(0, len(order) - 1, 1) if (index1 - index2 < 2): continue maze = orig_maze.copy() x = start_x y = start_y steps = 0 new_order = order.copy() new_order[index1] = order[index2] new_order[index1 + 1] = order[index2 + 1] new_order[index2] = order[index1] new_order[index2 + 1] = order[index1 + 1] for item in new_order: result = shortest_path(x, y, maze, [], 0, item) maze = remove_key(item, maze) if (result[0] == 9999): broke = True break steps += result[0]