Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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中将6*6数组转换为3*3数组时出现的问题_Javascript_Arrays - Fatal编程技术网

javascript中将6*6数组转换为3*3数组时出现的问题

javascript中将6*6数组转换为3*3数组时出现的问题,javascript,arrays,Javascript,Arrays,我试图解决黑客排名问题,这是问题链接 在这个问题中,我将(6*6)数组转换为3*3数组并传递给其他函数。在3*3阵列的转换中,未获得问题要求所需的阵列结构 我用console.log语句进行调试,并在谷歌上搜索进一步的步骤。我一直坚持按照问题要求构造数组 不过,有一个测试用例以黑客级别运行代码。你能帮我找出错误吗 代码段: 函数getSubArray(arr、tlc、大小){ var a=新数组(); 对于(变量i=tlc[0];i

我试图解决黑客排名问题,这是问题链接

在这个问题中,我将(6*6)数组转换为3*3数组并传递给其他函数。在3*3阵列的转换中,未获得问题要求所需的阵列结构

我用console.log语句进行调试,并在谷歌上搜索进一步的步骤。我一直坚持按照问题要求构造数组

不过,有一个测试用例以黑客级别运行代码。你能帮我找出错误吗

代码段:

函数getSubArray(arr、tlc、大小){ var a=新数组(); 对于(变量i=tlc[0];i 完整代码:

/*
让我们简单地用不同的方式表示整个问题空间。
让我们把同构的、高阶的JS数组重新设想为两个-
维度代数数组而不是JS数组,因为JS
天生就不适合这样。
首先,一些用于处理数组的实用函数。。。
*/
//计算并返回所有所需子阵列的总和-
//依赖于以不同方式处理JS数组的函数*;
//当前的实现假定形状为正方形的子阵列
//需要{size x size}
功能钙基(arr、大小){
var sums=新数组();
控制台日志(arr.length);
对于(变量i=0;i};不幸的是,Javascript不是python,所以为了解决这个问题,您必须首先扩展标准库。但一旦这一切结束,程序的其余部分就很容易了:

/“库”
功能*iter(it){
屈服于它;
}
函数*zip(…its){
its=its.map(iter);
while(true){
让rs=its.map(it=>it.next());
如果(r.some(r=>r.done))
打破
收益率r.map(r=>r.value);
}
}
函数*slice(it,n){
对于(让x来计算){
如果(--n<0)
产量x;
}
}
函数和(it){
设s=0;
对于(让x来计算)
s+=x;
返回s;
}
函数最大值(it){
设s=-无穷大;
对于(让x来计算)
s=x>s?x:s;
返回s;
}
//“您的程序”
函数*三元组(a){
产量*zip(a,切片(a,1),切片(a,2));
}
函数*和(mat){
对于(让三行(mat))
对于(让[s0,s1,s2]的zip(…rows.map(三元组)))
收益率和(s0)+s1[1]+和(s2);
}
功能解决方案(mat){
返回最大值(总和(mat));
}
//“测试”
让测试=[
[-9, -9, -9, 1, 1, 1,],
[0, -9, 0, 4, 3, 2,],
[-9, -9, -9, 1, 2, 3,],
[0, 0, 8, 6, 6, 0,],
[0, 0, 0, -2, 0, 0,],
[0, 0, 1, 2, 4, 0,],
];

控制台日志(解决方案(测试))问题在于计算沙漏位置的最大值之和,因此没有必要拆分为多个子数组

函数计算
function getSubArray(arr, tlc, size) {
  var a = new Array();
  for (var i = tlc[0]; i < size + tlc[0]; i++) {
    var b = new Array();
    for (var j = tlc[1]; j < size + tlc[1]; j++) { // index must be 1
      b.push(arr[i][j]);
    }
    if ((i - tlc[0]) % (size-1)) { // A bit more generic; out of inner loop
      b.pop(); // No index
      b.shift();
    }
    a.push(b);
  }
  console.log(a);
  return a;
}