Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
Digging a canal solution in Uncategorized category for Digging a Canal by capback250
# migrated from python 2.7
COORDS = ((-1, 0), (0, -1), (0, 1), (1, 0))
def checkio(grid):
weights = [[0] * len(grid[0])] + [[float('inf')] * len(grid[0]) for _ in grid]
grid.insert(0, [0] * len(grid[0]))
shortestWay = lambda g, w, x, y: min([g[x][y] + w[x + c[0]][y + c[1]] for c in COORDS if 0 <= x + c[0] < len(g) and 0 <= y + c[1] < len(g[0])])
def recursiveWalk(grid, weights):
for x in range(1, len(grid)):
for y in range(len(grid[0])):
new = shortestWay(grid, weights, x, y)
if new < weights[x][y]:
weights[x][y] = new
recursiveWalk(grid, weights)
recursiveWalk(grid, weights)
return min(weights[-1])
Feb. 24, 2016