Advertisement
jhondoe23232

Untitled

Nov 11th, 2019
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.16 KB | None | 0 0
  1. def can_hike_to(elevation_map: List[List[int]], start: List[int],
  2. dest: List[int], supplies: int) -> bool:
  3. '''Return True if and only if a hiker can move from start to dest in
  4. elevation_map without running out of supplies.
  5.  
  6. Precondition: elevation_map is a valid elevation map.
  7. start and dest are valid cells in elevation_map.
  8. dest is North-West of start.
  9. supplies >= 0
  10.  
  11. >>> map = [[1, 6, 5, 6],
  12. ... [2, 5, 6, 8],
  13. ... [7, 2, 8, 1],
  14. ... [4, 4, 7, 3]]
  15. >>> can_hike_to(map, [3, 3], [2, 2], 10)
  16. True
  17. >>> can_hike_to(map, [3, 3], [2, 2], 8)
  18. False
  19. >>> can_hike_to(map, [3, 3], [3, 0], 7)
  20. True
  21. >>> can_hike_to(map, [3, 3], [3, 0], 6)
  22. False
  23. >>> can_hike_to(map, [3, 3], [0, 0], 18)
  24. True
  25. >>> can_hike_to(map, [3, 3], [0, 0], 17)
  26. False
  27. '''
  28. change_west = (elevation_map[start[0]][start[1]])-(elevation_map[start[0]][start[1]-1])
  29. change_north = (elevation_map[start[0]][start[1]])-(elevation_map[start[0]-1][start[1]])
  30.  
  31. while start[0][1] != dest[0][1]:
  32. if start[0] == dest[0]:
  33. elevation_map[start[0]][start[1]-1]
  34. change = elevation_map[start[0]][start[1]] - elevation_map[start[0]][start[1]-1]
  35. supplies = supplies - abs(change)
  36.  
  37. elif start[1] == dest[1]:
  38. elevation_map[start[0]-1][start[1]]
  39. change = elevation_map[start[0]][start[1]] - elevation_map[start[0]-1][start[0]]
  40. supplies = supplies - abs(change)
  41. elif change_west < change_north:
  42. elevation_map[start[0]][start[1]-1]
  43. change = elevation_map[start[0]][start[1]] - elevation_map[start[0]][start[1]-1]
  44. supplies = supplies - abs(change)
  45.  
  46. elif change_north < change_west:
  47. elevation_map[start[0]-1][start[1]]
  48. supplies = supplies - abs(change_north)
  49. elif change_west < change_north:
  50. elevation_map[start[0]][start[1]-1]
  51. supplies = supplies - abs(change_west)
  52. if supplies < 0:
  53. return False
  54. return True
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement