将2D数组向外迭代到任意坐标的边界

时间:2015-07-28 14:24:25

标签: algorithm swift multidimensional-array 2d traversal

我目前正在尝试在Swift中创建一个函数来遍历任意数量的行或列的二维数组。

例如:

let array: [[Int]] = [
   [0, 1, 2, 3, 4],
   [0, 1, 2, 3, 4],
   [0, 1, 2, 3, 4]
   [0, 1, 2, 3, 4]
   [0, 1, 2, 3, 4]
]

算法的结果将打印出来自任意行和列点的相邻单元格,向外扩展为正方形,直到所述正方形中的所有值都超出数组的边界。

例如,如果我选择了数组[row / 2] [col / 2],即:" 2",输出将为:

[2], [2, 1, 1, 1, 2, 3, 3, 3], [2, 1, 0, 0, 0, 0, 0, 1, 2, 3, 4, 4, 4, 4, 4, 3]

目前,我可以通过使用元组数组和for循环来组合数组中的直接相邻单元格,如下所示:

let adjacentCells: [(Int, Int)] = [
    (-1,-1), (0,-1), (1,-1), (-1,0), (1,0), (-1,1), (0,1), (1,1)
]

for (rowOffset, colOffset) in adjacentCells {
    if row+rowOffset >= 0 && row+rowOffset < TOTAL_NUMBER_OF_ROWS && col+colOffset >= 0 && col+colOffset < TOTAL_NUMBER_OF_COLUMNS {
        // Store adjacent cell in new array for later use
    }
}

1 个答案:

答案 0 :(得分:0)

Here是我在python中编写的一个解决方案,它可以扫描环形图案(方形或菱形)中的点网格。它还有各种空间模式可供扫描。