Advertisement
Guest User

Untitled

a guest
Jan 21st, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.20 KB | None | 0 0
  1. def create_graph(maze):
  2.     """
  3.    compute the graph representation of the map
  4.    """
  5.     graph = {}
  6.     for x in range(len(maze)):
  7.         for i in range(len(maze[x])):
  8.             if maze[x][i] == 1:
  9.                 field_location = str(x) + ":" + str(i)
  10.                 field_edges = []
  11.                 try:
  12.                     if maze[x][i-1] == 1:
  13.                         edge_left = str(x) + ":" + str(i-1)
  14.                         field_edges.append(edge_left)
  15.                 except IndexError:
  16.                     pass
  17.                 try:
  18.                     if maze[x][i+1] == 1:
  19.                         edge_right = str(x) + ":" + str(i+1)
  20.                         field_edges.append(edge_right)
  21.                 except IndexError:
  22.                     pass
  23.                 try:
  24.                     if maze[x-1][i] == 1:
  25.                         edge_bottom = str(x-1) + ":" + str(i)
  26.                         field_edges.append(edge_bottom)
  27.                 except IndexError:
  28.                     pass
  29.                 try:
  30.                     if maze[x+1][i] == 1:
  31.                         edge_top = str(x+1) + ":" + str(i)
  32.                         field_edges.append(edge_top)
  33.                 except IndexError:
  34.                     pass
  35.                 field = {field_location: set(field_edges)}
  36.                 graph.update(field)
  37.     return graph
  38.  
  39. graph = create_graph(maze)
  40. print(graph)
  41.  
  42.  
  43. def bfs_paths(graph, position, goal):
  44.     queue = [(position, [position])]
  45.     while queue:
  46.         (vertex, path) = queue.pop(0)
  47.         for next in graph[vertex] - set(path):
  48.             if next == goal:
  49.                 yield path + [next]
  50.             else:
  51.                 queue.append((next, path + [next]))
  52.  
  53. ways = list(bfs_paths(graph, "1:1", "7:7"))
  54.  
  55.  
  56.  
  57. def shortest_path(graph, position, goal):
  58.     try:
  59.         return next(bfs_paths(graph, position, goal))
  60.     except StopIteration:
  61.         return None
  62. shortest = shortest_path(graph, "1:1", "7:7")
  63.  
  64. def update(position):
  65.     """Updated ax, bzw. fügt einen Kries kinzu"""
  66.     global ax
  67.     ax.add_patch(Circle((position[0], position[2]), .3, color='green', alpha=1))
  68.  
  69. for x in range(len(shortest)):
  70.     update(position)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement