【发布时间】:2020-09-26 00:19:14
【问题描述】:
问题
我有一个非常简单的迷宫(迷宫),我基本上想通过将穿过它的通道一分为二来将其扩大一倍。这对我来说很难用语言来解释,所以这里有一张图表,显示了原始转换为我想要的结果:
问题
当然,我有一个 2D 布尔数组,我必须将其大小翻倍,但我发现很难掌握如何在不破坏迷宫的统一规则的情况下进行这种缩放?
单行迷宫是没有任何连接点和选择的迷宫。这只是一个很长的通道,它会减慢求解器到达终点的速度。
尝试
我最初的想法是找到作为墙壁的通道节点的每个邻居,并将它们向外推 2 个瓷砖,然后在之前邻居所在的位置再次添加一堵墙。这只是导致了这个令人尴尬的科学怪人:
研究与资源
- 另一个有趣的可视化和解释我正在寻找的结果是这样的: https://forums.tigsource.com/index.php?topic=40832.msg1173956#msg1173956
- 我还获得了 Jamis Buck 的“Mazes for Progressmers”,但遗憾的是它没有涵盖单行迷宫。
- Jamis Buck 实际上似乎有一个用 Ruby 编写的单行迷宫生成器的公共仓库。我发现这种语言非常难以解析。也许只是一些帮助解释所做的事情就足以用 C# 编写我自己的:https://github.com/jamis/theseus/blob/eff25e2d02da00bb9515690b83008ec05e852317/lib/theseus/orthogonal_maze.rb#L108
【问题讨论】:
标签: c# multidimensional-array scaling maze