【发布时间】:2021-12-08 05:33:30
【问题描述】:
这是一个在线练习,我试图了解解决方案。
问题是:
给定下图(一个多维数组),0 值充当 pipe 和 1 值充当水泥。我需要编写代码来确定 如果“管道”从第一个数组的顶部延伸(你可以这样说 是管道的“开口”)到最后一个数组的底部。
const arr = [ [0, 0, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [1, 1, 1, 1, 0], [1, 0, 1, 1, 0], ]您为上述数组编写的代码将输出“true”,因为 0 个值形成以下模式(用星号替换):
const arr = [ [0, 0, 0, *, 1], [0, 0, 1, *, *], [0, 0, 0, 1, *], [1, 1, 1, 1, *], [1, 0, 1, 1, *], ]
在我的脑海中,我将这个问题想象为我将创建一个指针以在数组中移动的问题。如果规则只要求编码器在每个数组中使用一个 0,那么问题将很容易解决。由于有多个死胡同,我的思绪变得糊涂了。我认为有一种更简单的方法来看待这个问题,即循环思考。我知道这可以被数学化,但我不是一个数学家。
我的补救方法是简单地创建一组函数,例如:
checkSurroundingValues()
goForward()
goBackward()
goLeft()
goDOwn()
goUp()
etc ,但是这样做会演变成一个过于复杂的混乱。我认为有一些技巧可以可视化如何完成这个问题。我想清楚地了解“诀窍”和思维过程。
我觉得要走的路是编写跟随每个“零”的代码,并有效地产生一个新的“爬虫”来跟踪每条线索,但我不知道如何编写。 :)
【问题讨论】:
标签: javascript arrays path-finding