如何选择/分组一个2D矩阵中同心元素?
以下是创建2D数组的代码。
可能的输出结果只是遍历每个连续级别而不是分组出同心圆细胞; 比如,如果遍历了第一级别的同心圆细胞,那么就会执行
以下是创建2D数组的代码。
function Create2DArray(rows) {
var arr = [];
for (var i=0;i<rows;i++) {
arr[i] = [];
}
return arr;
}
想象一个位于矩阵中心,地址为i,j
的元素。
如何按以下方式分离出单元格?
即只突出显示的元素被分组/分离出来。
最好使用数学算法,而不是循环(这将更有效率)
注意
以上方法仅适用于矩阵大小为奇数的情况,即3 x 3
,5 x 5
,7 x 7
等。因此,如果有一种方法可以实现大于3的偶数矩阵,请也提出建议(对于大于或等于4的矩阵,我们可以使用奇数大小的矩阵子集来实现上述算法并丢弃其余部分)。
请使用数学/指数来切割同心圆单元,而不是使用传统迭代器或类似物,因为这样可以进行更快速的计算(...因为您可以从中央地址(或索引)开始递减/增加)(如果可能,如果不可能,您可以提出任何方法)
可能的输出可以是相应单元格地址的数组或对象
像这样跨度:
index/key 1-> level 1 concentric cells
index/key 2-> level 2 concentric cells
index/key 3-> level 3 concentric cells
...
可能的输出结果只是遍历每个连续级别而不是分组出同心圆细胞; 比如,如果遍历了第一级别的同心圆细胞,那么就会执行
alert(level 1)
... 然后在第二级别之后执行alert(level 2)
等等...