Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 矩阵蛇阵_Javascript_Arrays_Algorithm_Function_Matrix - Fatal编程技术网

Javascript 矩阵蛇阵

Javascript 矩阵蛇阵,javascript,arrays,algorithm,function,matrix,Javascript,Arrays,Algorithm,Function,Matrix,我怎么能写这个?! 创建一个函数,该函数接受一个数字(可以是任意数字),并生成一个包含7列6行的螺旋矩阵(二维数组),其中开始是作为参数传入的数字。有关模式,请参见下面的图像。在第一个示例中,调用了snakeArray(1)。第二个是蛇阵(-10)。 有几种方法可以做到这一点。但由于数组的大小始终为6x7,因此实际上可以创建一种模板数组作为数组文本,它以0开头 那么剩下的就是小菜一碟了:只需将参数添加到所有值中: 函数蛇形数组(开始){ 返回[ [ 0, 1, 2, 3, 4, 5

我怎么能写这个?! 创建一个函数,该函数接受一个数字(可以是任意数字),并生成一个包含7列6行的螺旋矩阵(二维数组),其中开始是作为参数传入的数字。有关模式,请参见下面的图像。在第一个示例中,调用了snakeArray(1)。第二个是蛇阵(-10)。


有几种方法可以做到这一点。但由于数组的大小始终为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求反)。您能详细解释一下它是如何工作的吗?请参阅答案的补充。