Javascript:将二维数组分割成正方形区域并对每个区域的最大值求和

标签 javascript arrays

我想将矩阵分割成从左上角开始具有给定尺寸(k)的正方形区域,然后对每个区域的最大值求和。 这就是我到目前为止所做的。

arr = [
  [ 0, 8, 1, 1, 10, 6 ],
  [ 6, 8, 7, 0, 3, 9],
  [ 0, 7, 6, 8, 6, 5],
  [ 4, 0, 2, 7, 2, 0],
  [ 4, 4, 5, 7, 5, 1]
], l = console.log, j = JSON.stringify

result = [0, 3].map(i => arr.map(a => a.slice(i, i+3)))  // map over the indexes to split by to get the parts

l(j(result ))

我不是 javascript 专家,但我想学习。 任何帮助将不胜感激。

最佳答案

我知道它有点复杂,但它正在工作。它会尝试获取您想要的区域,但如果无法获得特定大小的区域,它将获取剩下的任何区域。(在我们的例子中,它将数组划分为 2 个 3*3 的区域,以及另外 2 个 2 的区域) *3)(警告:-如果区域中的所有元素都小于-100,它将不起作用,如果您希望它起作用,请相应地更改“runningMax”的值)

function max(arr){
  var runningMax=-100;
	for(i = 0, i2 = arr.length; i<i2; i++) {
      runningMax = Math.max.apply(null, arr[i].concat(runningMax));
  }
  return runningMax;
}

arr = [
  [ 0, 8, 1, 1, 10, 6 ],
  [ 6, 8, 7, 0, 3, 9],
  [ 0, 7, 6, 8, 6, 5],
  [ 4, 0, 2, 7, 2, 0],
  [ 4, 4, 5, 7, 5, 1]
], l = console.log, j = JSON.stringify

result = [0, 3].map(i => arr.map(a => a.slice(i, i+3)));

y=[0,3].map(i=>result.map(a=>a.slice(i,i+3)));

var v=0;
y.forEach(function(e){
	e.forEach(function(q){
		//console.log(max(q) + "  "+ q);
		v+=max(q);
	})
});

console.log(v);

关于Javascript:将二维数组分割成正方形区域并对每个区域的最大值求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49285556/

相关文章:

javascript - 将页面片段加载到 Twitter Bootstrap 模态中

javascript - 循环 JSON 对象并删除特定的子对象

C传递指针数组

C - 当数组大小很大时如何初始化结构数组?

javascript - js中的空间验证?

javascript - 如何在 Angular 中实现 XRegExp

javascript - 为什么打开popup,textarea小于里面的文字?

javascript - 为什么 javascript 找不到我的函数?

C - 这段代码 "work"如何/为什么?