Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def solve(minemap, miner, exit_):
- miner = ' '.join([str(miner.get('x')) + ' ' + str(miner.get('y'))])
- exit_ = ' '.join([str(exit_.get('x')) + ' ' + str(exit_.get('y'))])
- minemap_high = dict(zip([str(i) + ' ' + str(j) for i in range(len(minemap)) for j in range(len(minemap[i]))],
- [[str(n) + ' ' + str(m) for n in range(len(minemap)) if n in (i+1, i, i-1)
- for m in range(len(minemap[n])) if m in (j-1, j, j+1) and i == n and minemap[n][m] == True or
- m == j and abs(n - i) == 1 and minemap[n][m] == True]
- for i in range(len(minemap)) for j in range(len(minemap[i]))]))
- minemap_high = {elem: [x for x in minemap_high.get(elem) if x != elem]
- for elem in minemap_high if elem in minemap_high.get(elem)}
- def the_best_way(miner, my_way):
- my_way.append(miner)
- if miner == exit_:
- possible_ways.append(my_way)
- element = minemap_high.get(miner)
- for i in range(len(element)):
- if element[i] not in my_way:
- my_way = my_way[:my_way.index(miner) + 1]
- the_best_way(element[i], my_way)
- possible_ways = []
- the_best_way(miner, [])
- return letters(min(possible_ways))
- def letters(possible_ways):
- result = []
- for i in range(len(possible_ways)):
- if possible_ways[i - 1][0] == possible_ways[i][0]:
- if possible_ways[i - 1][2] < possible_ways[i][2]:
- result.append('down')
- else:
- result.append('up')
- else:
- if possible_ways[i - 1][0] < possible_ways[i][0]:
- result.append('right')
- else:
- result.append('left')
- return result[1:]
Advertisement
Add Comment
Please, Sign In to add comment