【发布时间】:2018-12-22 23:02:31
【问题描述】:
问题
假设我有一个(无限的)六边形平铺。从 1 个六边形开始,我可以移动到除了一些“空心”六边形之外的每个相邻的。一些六边形的权重为 1,而其他六边形的权重为 2。最大权重为 x,如何从x 下方的起始十六进制中获取所有具有累积权重的六边形?
上下文
我正在尝试为游戏 Civilization V 制作一个模组。在其中,我需要获得一个单位在 10 回合内可以到达的所有图块的集合,知道这个单位每回合有 1 个移动点,并且除了道路以外的每块瓷砖都要花费 1 MP 才能到达(道路花费 0.5)。山区和海洋瓷砖是不可接近的。 简而言之,它是所选单位周围显示区域的扩展版本,显示单位 1 圈距离内的所有图块。
当前测试
截至目前,我已经尝试了 2 种解决方案,但似乎没有一个非常有效。我的大多数尝试都不知道要检查哪些图块(因为它们尚未检查,或者因为尚未检查它们的最衬衫路径)以及不检查哪些图块,最终多次检查范围内的每个图块,并且拒绝几个看似在范围内但已从比必要更长的路径检查的图块,因此认为它们太远了。
- 第一个非常幼稚,对每个图块进行递归检查
围绕起始图块,消除所有累积的图块
重量超过
x。 - 对于第二个解决方案,我保持不变 结构,但我添加了一个图块不应该的条件过滤 如果与原点的距离低于累积值,则被拒绝 计算到那里的权重(因为具有不同累积的多条路径 权重可以导致相同的瓷砖)。但是有很多这样的情况 断言是错误的。
我真的需要一些关于如何做到这一点的建议。
谢谢你, 元
【问题讨论】: