原题地址:https://www.codewars.com/kata/5326ef17b7320ee2e00001df/train/ruby
地图中只有一条可行路线。例如:
map = [[true, false],
[true, true]];
solve(map, {'x'=>0,'y'=>0}, {'x'=>1,'y'=>1})
# Should return ['right', 'down']
我的算法如下:
def solve(minemap, miner, exit)
ways = []
x = miner['x']
y = miner['y']
max = minemap.length
may = minemap.first.length
until (x == exit['x'] && y == exit['y'])
if y > 0 && up(minemap, x, y) == true
minemap[x][y] = '#'
y -= 1
ways.push('up')
elsif y < may - 1 && down(minemap, x, y) == true
minemap[x][y] = '#'
y += 1
ways.push('down')
elsif x > 0 && left(minemap, x, y) == true
minemap[x][y] = '#'
x -= 1
ways.push('left')
elsif x < max - 1 && right(minemap, x, y) == true
minemap[x][y] = '#'
x += 1
ways.push('right')
end
end
ways
end
def up(map, x, y)
return map[x][y - 1]
end
def down(map, x, y)
return map[x][y + 1]
end
def left(map, x, y)
return map[x - 1][y]
end
def right(map, x, y)
return map[x + 1][y]
end
不符合题目要求,耗时超过12000ms,待更新