Files
2024-03-22 17:01:42 +01:00

95 lines
2.1 KiB
Python

fio = open("maze.txt", "r")
maze_raw = fio.readlines()
fio.close()
xmax = len(maze_raw) - 1
ymax = len(maze_raw[0].strip()) - 1
maze = {}
sol = {}
for x in range(len(maze_raw)):
for y in range(len(maze_raw[x].strip())):
paths = set()
if x > 0:
if maze_raw[x - 1][y] == " ":
paths.add((x - 1, y))
if y > 0:
if maze_raw[x][y - 1] == " ":
paths.add((x, y - 1))
if maze_raw[x][y] == " ":
paths.add((x, y))
if y < ymax:
if maze_raw[x][y + 1] == " ":
paths.add((x, y + 1))
if x < xmax:
if maze_raw[x + 1][y] == " ":
paths.add((x + 1, y))
if len(paths) != 0:
maze[(x,y)] = paths
if maze_raw[x][y] == "*":
sol[(x,y)] = "*"
else:
sol[(x,y)] = "?"
for key in maze:
if key[0] == 0:
if maze_raw[key[0]][key[1]] == " ":
sol[key] = "N"
if key[0] == xmax:
if maze_raw[key[0]][key[1]] == " ":
sol[key] = "S"
if key[1] == 0:
if maze_raw[key[0]][key[1]] == " ":
sol[key] = "W"
if key[1] == ymax:
if maze_raw[key[0]][key[1]] == " ":
sol[key] = "E"
cont = True
def check(xi, yi):
global sol
return (xi, yi) in sol and sol[xi, yi] != "?" and sol[xi, yi] != "*"
while cont:
cont = False
for key in maze:
if sol[key] == "?":
if check(key[0] - 1, key[1]):
sol[key] = "N"
cont = True
continue
if check(key[0] + 1, key[1]):
sol[key] = "S"
cont = True
continue
if check(key[0], key[1] - 1):
sol[key] = "W"
cont = True
continue
if check(key[0], key[1] + 1):
sol[key] = "E"
cont = True
continue
for x in range(xmax+1):
for y in range(ymax+1):
print(sol[(x,y)],end="")
print()