Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def find_path(grid):
- w, h = len(grid[0])-1, len(grid)-1 # width & height
- def foo(x,y):
- if x < 0 or y < 0: return []
- if x==0 and y==0: return [[(x,y)]]
- _paths = []
- for i, j in [(1, 0), (0, 1)]:
- (path:=foo(x-i, y-j)) and [_paths.append([*p, (x,y)]) for p in path]
- return _paths
- path = min(foo(h, w), key=lambda x: sum([grid[i][j] for i,j in x]))
- for i, row in enumerate(grid):
- print(row,'\t'.rjust(6), ["#" if (i, ii) in path else n for ii, n in enumerate(row)])
- print()
- g1 = [[131, 673, 234],
- [201, 96, 342],
- [630, 803, 200]]
- g2 = [[131, 673, 234, 103, 18],
- [201, 96, 342, 212, 400],
- [630, 803, 746, 322, 111]]
- g3 = [
- [131, 673, 234, 103, 18],
- [201, 96, 342, 965, 150],
- [630, 803, 746, 422, 111],
- [537, 699, 497, 121, 956],
- [805, 732, 524, 37, 331]]
- g4 = [[131, 673, 234, 103, 18],
- [201, 96, 342, 965, 150],
- [630, 803, 746, 422, 111],
- [537, 699, 400, 120, 956],
- [805, 732, 524, 37, 331],
- [805, 732, 524, 10, 100]]
- find_path(g1)
- find_path(g2)
- find_path(g3)
- find_path(g4)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement