【问题标题】:What is the most efficient way of visiting neighbor elements in a 2-D array in Go?在 Go 中访问二维数组中的相邻元素的最有效方法是什么?
【发布时间】:2016-01-16 12:18:13
【问题描述】:

我遇到的问题是我必须访问二维数组中元素[i, j] 的所有八个邻居。

但是,考虑到数组越界的错误,我必须在[i-1, j][i+1, j] 上做很多if else 语句...这对我来说有点冗长。

所以我想知道在 Go 中是否有任何有效的方法来解决这类问题?
喜欢错误捕捉系统?

【问题讨论】:

  • Go 是一种冗长的语言。它只有 4 或 8 次访问,具体取决于您是否要使用那些对角相邻的项目。只需用一个干净直接的条件结构写出来。仍然是 20-30 行的函数,这没什么大不了的。
  • 我认为您解决问题的方法有误,您应该知道界限,也许如果您分享一些代码,有人可以提供更好的帮助。
  • 唯一有效的方法是最小化所需的边界检查量。但我想你已经想通了。现在如何做到这一点完全取决于您的用例。您是否循环扫描整个阵列(元胞自动机)?或者你是在随机检查元素吗?分享一些代码肯定会有帮助。

标签: arrays go


【解决方案1】:

一般的解决方案将遵循pseudo-code presented here
请参阅 yucchiy/minesweeper field.go#GetNeighbors(x, y int) 的 Go 示例。

这取决于您是否可以使用由字段组成的实际 Array 对象来丰富您的数据结构,每个字段都知道它的邻居。然后“访问二维数组中的相邻元素”变成向字段询问作为其邻居的字段列表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-30
    • 1970-01-01
    • 2017-03-12
    • 2018-06-08
    • 2011-01-03
    • 2021-03-22
    • 1970-01-01
    • 2014-09-24
    相关资源
    最近更新 更多