feat: Initial commit
This commit is contained in:
95
Laboratorio11/maze.py
Normal file
95
Laboratorio11/maze.py
Normal file
@@ -0,0 +1,95 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user