检查矩阵中相邻点的增量,JavaScript

检查矩阵中相邻点的增量,JavaScript,javascript,matrix,Javascript,Matrix,我已经使用了几天的代码战(我强烈推荐它,因为它是一种增强技能的好方法),今天我遇到了一个我一生都无法理解的挑战。我不喜欢给出解决方案,但我尝试过的都不管用 一般来说,挑战在于:给定任何数字矩阵,例如 [1,4,5,8] [2,3,6,7] 作为函数的参数,如果从左上角开始,可以遍历数组中的所有数字,每次递增一个,只移动到相邻点,则返回true。所以,我从1开始,2是相邻的,所以我可以移动到那里,3是相邻的,所以我可以移动到那里,依此类推。如果您无法通过整个矩阵,则返回false。这看起来很简单

我已经使用了几天的代码战(我强烈推荐它,因为它是一种增强技能的好方法),今天我遇到了一个我一生都无法理解的挑战。我不喜欢给出解决方案,但我尝试过的都不管用

一般来说,挑战在于:给定任何数字矩阵,例如

[1,4,5,8]
[2,3,6,7]
作为函数的参数,如果从左上角开始,可以遍历数组中的所有数字,每次递增一个,只移动到相邻点,则返回true。所以,我从1开始,2是相邻的,所以我可以移动到那里,3是相邻的,所以我可以移动到那里,依此类推。如果您无法通过整个矩阵,则返回false。这看起来很简单,直到你认真去做。 你必须:

–跟踪并比较检查的项目数量与矩阵中的项目数量。 –以某种方式检查每个相邻点的当前点+1值,然后将其设为当前点。然后继续检查,直到数字用完为止,否则返回false

我尝试了很多不同的方法,为循环使用了3或4层嵌套的
,但我尝试的方法对所有测试用例都无效。我可能再也看不到这个问题了,但为了知识起见,有人能给我指出正确的方向吗?也就是说,帮助我理解如何有效地与矩阵中的相邻空间进行比较(以避免为未来的代码斗士提供答案)

我想澄清一下:

函数将通过矩阵进行设置:

function traverse(matrix) {

}
这样的事情会变成现实:

[[ 1, 4, 5, 8]
 [ 2, 3, 6, 7]]
这样的东西会返回false:

[[ 1, 3, 5, 8]
 [ 2, 4, 9, 7]
 [10,12, 6,11]]

非常感谢您能帮助我了解我在执行过程中可能出现的错误。(顺便说一句,我无法准确地发布我尝试过的内容,因为我不相信有办法在网站上找到它。)

矩阵是否总是从1到x,击中中间的每个整数?不,它不会,它可以从任何数字开始,以左上角的位置为准。这是另一个障碍,如果不做检查,你甚至不知道每个序列号是否在矩阵中。我不知道如何立即检查矩阵位置,但其余的应该不会太糟糕。获取左上角的值。增加一个。查一下那个号码。无match返回false,match占据该位置并重复该过程。留个柜台。如果你这么做,所有的数字都会返回真的。对,我觉得听起来也很简单,但是当检查相邻的值时,它会变得很棘手。当我尝试它时,我检查了所有4个位置,但如果在该位置没有任何东西,它会给我一个错误,不管我首先运行了检查。例如,左上角位置缺少左上角和相邻位置,尝试检查它们会抛出错误,因为以编程方式,传递的是负数位置。然后,即使我可以检查相邻的值,我也不能立即返回false,因为如果不记录它,(继续)就无法说没有一个位置我还没有检查过。这就是我遇到的逻辑问题。矩阵是否总是从1到x,击中中间的每个整数?不,它不是,它可以从任何数字开始,以左上角的位置为准。这是另一个障碍,如果不做检查,你甚至不知道每个序列号是否在矩阵中。我不知道如何立即检查矩阵位置,但其余的应该不会太糟糕。获取左上角的值。增加一个。查一下那个号码。无match返回false,match占据该位置并重复该过程。留个柜台。如果你这么做,所有的数字都会返回真的。对,我觉得听起来也很简单,但是当检查相邻的值时,它会变得很棘手。当我尝试它时,我检查了所有4个位置,但如果在该位置没有任何东西,它会给我一个错误,不管我首先运行了检查。例如,左上角位置缺少左上角和相邻位置,尝试检查它们会抛出错误,因为以编程方式,传递的是负数位置。然后,即使我可以检查相邻的值,我也不能立即返回false,因为如果不记录它,(继续)就无法说没有一个位置我还没有检查过。这就是我遇到问题的逻辑。