예제 #1
0
파일: 10.py 프로젝트: daanklijn/aoc2019
        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)
예제 #2
0
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]