我在网格宇宙中工作 - 对象仅存在于二维矩阵中的整数位置。
一些条款:
广场 - 一个离散的位置。每个正方形都有一个 int x 和 int y 坐标,并且没有两个正方形具有相同的 x 和 y 对。
相邻:一个正方形 X 与另一个正方形 Y 相邻,如果它们的 x 或 y 坐标的差异幅度不大于 1。更简单地说,所有正方形紧邻 N、NE、E、SE、S、SW 、W 和 NW 方向相邻。
Legend:
'?' - Unknown Traversibility
'X' - Non Traversable Square
'O' - Building (Non Traversable)
' ' - Traversable Square
问题:
鉴于以下一般情况:
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?
? ? ? O O ? ? ?
? ? ? O O ? ? ?
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?
如果建造者与四栋建筑物之一相邻,我想建造两栋建筑物,使它们都共享一个公共相邻广场,该广场也与至少四栋现有建筑物中的一栋相邻,并且这个公共相邻广场没有被阻挡在.
基本有效解决方案:
X X X X X X X X X X X X X X X X X X X X X X
X X X X X X X X X X X X X X X X X X X X X X
X X X X X X X X X X X X X X X X X X X X X X
X X X O O X X X X X X O O X X X X X X O O X X X
X X X O O X X X X X X O O X X X X X O O O X X X
X X X O X X X O X X X X
O O X X X O X X X X X X X X
X X X X X X X X X X X
目前,我遍历四个建筑物相邻的所有可遍历方块,并寻找具有 3 个相邻可遍历方块的方块,但这有时会产生以下情况:
X X X X X X X X X X X X X X X X X X X X X X X X
X X X X X X X X X X X X X X X X X X X X X X X
X X X X X X X X X X O X X X X X O X
X X X O O X X X X X O O O X X X O O O X X
X X X O O X X X X X O O X X X X O O X X
X X X X X X X X X X X X X X
X X X O O X X X X X X X X X X X X X X X
X X X X X X X X X X X X X X X X X X
关于如何改进我的算法的任何想法?
编辑:添加了另一个失败的案例。
编辑:我还想知道是否有可能满足这些条件的配置。我不能保证一个可行的解决方案,如果没有办法成功地做到这一点,我不想尝试。