gpt4 book ai didi

闭包中的 Swift 映射元组

转载 作者:行者123 更新时间:2023-11-28 15:29:45 25 4
gpt4 key购买 nike

我有一个名为 Grid 的结构,它是 10 个单元 x 10 个单元,我需要确定给定单元的相邻单元的位置。

每个单元格的位置范围从 (0,0) 到 (9,9)。位置是 typealias Position = (row: Int, col: Int)norm 标准化位置,例如确保将 (12,0) 之类的东西映射回 10x10 网格作为 (2,0)。

func norm(_ val: Int, to size: Int) -> Int {
return ((val % size) + size) % size
}

Grid 的这个扩展应该确定给定像 (6,3) 这样的单元格的所有相邻单元格的位置。 我已经注释掉了我想弄清楚的部分。我正在尝试对邻居的 x 和 y 坐标运行规范以确定它们的实际位置。

extension Grid {
func neighbors(of cell: Cell) -> [Position] {
// return Grid.offsets.map{(norm($0, to: rows)), (norm($1, to: cols))}
}
}

在 Grid 结构中,所有 8 个可能的相邻位置都包含在 offsets 中。

struct Grid {
static let offsets: [Position] = [
(row: -1, col: 1), (row: 0, col: 1), (row: 1, col: 1),
(row: -1, col: 0), (row: 1, col: 0),
(row: -1, col: -1), (row: 0, col: -1), (row: 1, col: -1)
]
...
}
}

最佳答案

因为您正在映射偏移量,所以您需要将它们添加到单元格的当前位置以获得其相邻单元格的绝对位置。您还映射了一组 Position 元组,因此 map 闭包中只有一个参数是 Position - 所以不是 $0$1,你需要 $0.row$0.col

return Grid.offsets.map { (norm($0.row + cell.position.row, to: rows), norm($0.col + cell.position.col, to: cols)) }

请注意,由于您的 norm 函数,这将换行。例如,这个函数会说 (row: 3, col: 0) 的单元格紧挨着 (row: 3, col: 9) 的单元格/p>

关于闭包中的 Swift 映射元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44846939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com