如何打造多路无死角的“迷宫”?

Posted

技术标签:

【中文标题】如何打造多路无死角的“迷宫”?【英文标题】:How to make a "Maze" with multiple paths and no dead ends? 【发布时间】:2017-09-24 15:31:47 【问题描述】:

我将如何使用 C#(尤其是 Unity)使用多种解决方案来编写 Braid 迷宫?

根据我在简短研究中的理解,编织迷宫是一种递归迷宫,它允许循环,意味着没有死胡同。

我找到的最接近的答案是在这个线程中处理如何创建more than one successful path,但我无法将两者结合起来,因为线程中使用的示例是针对“完美”迷宫的。

通过这些步骤,您可以获得从头到尾的多条成功路径:

    将迷宫分为三组:开始(最初仅包含起始单元)、目标(最初仅包含目标单元)和未发现(所有其余部分)。 随机移除起始集或目标集中的单元格与未发现集中的单元格之间的墙,并将新发现的单元格移动到相应的集中。 重复直到每个单元格都在开始或目标设置中。 根据需要从起点到终点的路径移除两个区域之间的墙。

我需要的是第 5 步。它可以返回并删除所有死胡同,将其变成一个编织迷宫,然后我就准备好了! (假设迷宫大小为 n * n)。

【问题讨论】:

【参考方案1】:

最简单的方法怎么样:在构建迷宫时跟踪死胡同,然后在迷宫完成后,为每个死胡同移除它的三堵墙之一,以便它连接到迷宫的其他部分迷宫。可能有一些死胡同的配置,如果不以某种方式打破迷宫,这是不可能做到的,但我无法想出这样的例子。

【讨论】:

您可以提供这样的代码示例吗? @ryanhagz SE 不是代码编写服务。获取此处的信息并实际上是任何现有的迷宫算法,您应该能够消除死胡同。

以上是关于如何打造多路无死角的“迷宫”?的主要内容,如果未能解决你的问题,请参考以下文章

IO多路复用selectpollepoll的区别

Linux IO多路复用

从Go编程看IO多路复用Epoll

一文读懂Redis中的多路复用模型

如何让stm32产生多路输出 PWM 最好有代码

使用 select 多路复用未命名管道和其他文件描述符