Javascript 矩阵蛇阵
我怎么能写这个?! 创建一个函数,该函数接受一个数字(可以是任意数字),并生成一个包含7列6行的螺旋矩阵(二维数组),其中开始是作为参数传入的数字。有关模式,请参见下面的图像。在第一个示例中,调用了snakeArray(1)。第二个是蛇阵(-10)。Javascript 矩阵蛇阵,javascript,arrays,algorithm,function,matrix,Javascript,Arrays,Algorithm,Function,Matrix,我怎么能写这个?! 创建一个函数,该函数接受一个数字(可以是任意数字),并生成一个包含7列6行的螺旋矩阵(二维数组),其中开始是作为参数传入的数字。有关模式,请参见下面的图像。在第一个示例中,调用了snakeArray(1)。第二个是蛇阵(-10)。 有几种方法可以做到这一点。但由于数组的大小始终为6x7,因此实际上可以创建一种模板数组作为数组文本,它以0开头 那么剩下的就是小菜一碟了:只需将参数添加到所有值中: 函数蛇形数组(开始){ 返回[ [ 0, 1, 2, 3, 4, 5
有几种方法可以做到这一点。但由于数组的大小始终为6x7,因此实际上可以创建一种模板数组作为数组文本,它以0开头 那么剩下的就是小菜一碟了:只需将参数添加到所有值中:
函数蛇形数组(开始){
返回[
[ 0, 1, 2, 3, 4, 5, 6],
[21, 22, 23, 24, 25, 26, 7],
[20, 35, 36, 37, 38, 27, 8],
[19, 34, 41, 40, 39, 28, 9],
[18, 33, 32, 31, 30, 29, 10],
[17, 16, 15, 14, 13, 12, 11]
].map(row=>row.map(val=>val+start));
}
let result=snakeArray(-10);
for(让结果的行)console.log(…行)代码>请展示您的努力,以及您在何处遇到问题。我没有尝试这样做,因为我不明白路径总是一样的-沿着第一行,沿着最后一列等,只有数字会改变,而它们只是通过在前一个数字上加1来改变。您需要在数组中的每个项目中输入正确的数字。有几种方法可以做到这一点。一种方法是首先创建2D数组(可能全部为空),然后保持“方向”(用dx,dy表示)。开始向右移动,直到到达二维数组的边界或到达非空值。然后右转(交换dx,dy对,并对得到的dx求反)。您能详细解释一下它是如何工作的吗?请参阅答案的补充。