algorithm - 从任意坐标向外遍历二维数组到边界

标签 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]
]

算法的结果将从任意行和列点打印出相邻的单元格,在一个正方形中向外扩展,直到该正方形中的所有值都在数组的边界之外。

例如,如果我选择数组[行/2][列/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 in 循环来获取数组中紧邻的单元格,如下所示:

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
    }
}

最佳答案

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

关于algorithm - 从任意坐标向外遍历二维数组到边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31679180/

相关文章:

c++ - 计算将具有 n 个元素的集合分成 k 个子集的分区数

algorithm - 位置搜索算法

c++ - 所有数的最大公约数之和,直到 n 与 n

ios - 如何使用 Core Motion 通过 SwiftUI 输出磁力计数据?

Javascript 将数组项推送到命名索引

c - C中的参差不齐的数组

algorithm - 使用变量和路径覆盖 xml 文档

ios - 从第二个警报 View 中按“确定”时,进度平视显示器不显示

ios - GameCenter 与 SpriteKit 集成

PHP "Warning: Illegal offset type in ..."数组问题让我很困惑