Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Open Labyrinth by yukirin
from collections import deque
def checkio(maze_map):
queue = deque([((1, 1), '')])
MOVE = {'N': (-1, 0), 'S': (1, 0), 'E': (0, 1), 'W': (0, -1)}
while True:
pos, route = queue.popleft()
if pos == (10, 10): return route
for direction, move in MOVE.items():
dst = pos[0] + move[0], pos[1] + move[1]
if maze_map[dst[0]][dst[1]]: continue
queue.append((dst, route + direction))
maze_map[dst[0]][dst[1]] = 1
April 14, 2015