Guest User

Untitled

a guest
Jan 12th, 2016
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.77 KB | None | 0 0
  1. def solve(minemap, miner, exit_):
  2.     miner = ' '.join([str(miner.get('x')) + ' ' + str(miner.get('y'))])
  3.     exit_ = ' '.join([str(exit_.get('x')) + ' ' + str(exit_.get('y'))])
  4.     minemap_high = dict(zip([str(i) + ' ' + str(j) for i in range(len(minemap)) for j in range(len(minemap[i]))],
  5.                        [[str(n) + ' ' + str(m) for n in range(len(minemap)) if n in (i+1, i, i-1)
  6.                         for m in range(len(minemap[n])) if m in (j-1, j, j+1) and i == n and minemap[n][m] == True or
  7.                         m == j and abs(n - i) == 1 and minemap[n][m] == True]
  8.                         for i in range(len(minemap)) for j in range(len(minemap[i]))]))
  9.     minemap_high = {elem: [x for x in minemap_high.get(elem) if x != elem]
  10.                     for elem in minemap_high if elem in minemap_high.get(elem)}
  11.  
  12.     def the_best_way(miner, my_way):
  13.         my_way.append(miner)
  14.         if miner == exit_:
  15.             possible_ways.append(my_way)
  16.         element = minemap_high.get(miner)
  17.         for i in range(len(element)):
  18.             if element[i] not in my_way:
  19.                 my_way = my_way[:my_way.index(miner) + 1]
  20.                 the_best_way(element[i], my_way)
  21.     possible_ways = []
  22.     the_best_way(miner, [])
  23.     return letters(min(possible_ways))
  24.  
  25.  
  26. def letters(possible_ways):
  27.     result = []
  28.     for i in range(len(possible_ways)):
  29.         if possible_ways[i - 1][0] == possible_ways[i][0]:
  30.             if possible_ways[i - 1][2] < possible_ways[i][2]:
  31.                 result.append('down')
  32.             else:
  33.                 result.append('up')
  34.         else:
  35.             if possible_ways[i - 1][0] < possible_ways[i][0]:
  36.                 result.append('right')
  37.             else:
  38.                 result.append('left')
  39.     return result[1:]
Advertisement
Add Comment
Please, Sign In to add comment