【问题标题】:Iterate over 2D Array outward to boundaries from arbitrary coordinates从任意坐标向外迭代二维数组到边界
【发布时间】:2015-10-19 04:17:06
【问题描述】:

我目前正在尝试在 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]
]

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

例如,如果我选择了array[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 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
    }
}

【问题讨论】:

  • 您可能想查看广度优先搜索。当您尝试完成时,该算法在同心环中向外搜索。

标签: algorithm swift multidimensional-array 2d traversal


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-22
    • 2018-07-03
    • 1970-01-01
    • 2011-04-25
    • 2011-12-28
    • 2015-04-04
    • 2014-05-30
    • 2020-06-09
    相关资源
    最近更新 更多