我目前正试图在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
}
}
这是我用python写的一个解决方案,可以扫描环形图案(正方形或菱形)的点网格。它还有多种空间模式可供扫描。