迷宫生成器

制作可打印的迷宫,四种形状、三档难度。每个迷宫都有种子可重现,还能显示答案并下载 SVG 矢量文件。


下载 SVG
网格每个方向可从 5 到 40。种子让迷宫可以重现:留着它就能拿回同一个,改掉它就会生成新的。留空则随机生成。
格子数
400
答案步数
109
死胡同
35
岔路口
54

这是种子 500832 对应的 20 x 20 迷宫。再次输入该种子即可打印完全相同的迷宫,无论在本设备还是其他设备上。

迷宫是怎么生成的

生成器从一整片实心墙的网格开始,用递归回溯法在其中开路。它随机走向一个尚未到过的相邻格子,推倒两者之间的墙;一旦无路可走,就沿着自己的足迹往回退,直到找到还有新方向可去的格子。每个格子恰好被访问一次,所以每个迷宫都是完全连通的,必定存在一条通路。由此产生的蜿蜒长廊,正是让迷宫像迷宫而不像一堆短枝拼成的格架的原因。

难度真正改变了什么

这里的难度不是含糊的滑块,而是被重新打通的死胡同占多大比例。困难保留刚开凿出来的样子,也就是只有一条路径、错拐机会最多的完美迷宫。中等重新打通四分之一的死胡同,简单打通七成,把那些盲道变成可以一直穿过去的环路。在 20 x 20 的网格上大致是困难 42 个死胡同、中等 32 个、简单 14 个,最短路径也从约 143 步缩到 67 步。屏幕上这一个迷宫的统计就列在它上方,你能看到实际拿到的是什么。

长方形、圆形、菱形和三角形

四种形状都是从同一张方格网上剪出的轮廓:凡是中心落在轮廓之外的格子,在开凿之前就被直接舍去。20 x 20 的网格作长方形有 400 格,作圆形 316 格,作菱形 220 格,作三角形 200 格,所以带形状的迷宫比同样标称尺寸的长方形要小一些,也快一点。由于剪出形状可能在角落里孤立出一两个格子,生成器只保留最大的连通区块再在其中开凿,这就是带形状的迷宫从不会莫名缺一块的原因。

种子与重新打印同一个迷宫

每个迷宫都由一个种子生成,种子会随结果一并显示。用同样的尺寸、形状和难度输入同样的种子,就能得到一模一样的迷宫,今天或下学期,在这里或在另一台电脑上都一样。这正是它在课堂上好用的地方:把迷宫发下去,留好种子,之后用同样的设置勾上答案再打印一份。种子可以是词而不是数字,所以 四年级-周一 和 481029 一样好使。

值得一记

  • 绿点是入口,红点是出口,外墙只在这两处开口。
  • 图形以毫米作图,因此按 100% 打印就能得到实际尺寸的纸样。
  • SVG 是矢量文件,放大到任何尺寸都不会糊,事后还能编辑。
  • 显示的答案是最短路径,这一点在简单难度尤其重要,因为环路会带来不止一条通道。
  • 不保存任何内容。迷宫在我们的服务器上生成,结果送出后即丢弃。

常见问题

点打印,除迷宫以外的一切都会隐藏,纸面上只剩迷宫本身,周围没有菜单和标题。图形以毫米标注尺寸,因此只要打印机设为 100% 而不是适应页面,迷宫打出来就是显示的大小。

可以,种子就是为此而设。记下迷宫下方显示的种子,之后用同样的尺寸、形状和难度再输入一次,就能得到完全相同的迷宫。种子可以是词,所以像 三班-周二 这样的比数字更好记。

一定有。开凿算法对每个格子恰好访问一次,所以整个迷宫是一个连通区域,从入口到出口的路径是有保证的。勾上答案就能看到它以红线画出。

死胡同的数量。困难保留完美迷宫,也就是只有一条路径、死胡同最多。中等打通其中四分之一,简单打通七成,把它们变成环路。简单迷宫走起来也更短,在 20 x 20 的网格上约 67 步,而困难是 143 步。

因为形状是从同一张网格里剪出来的。内接于 20 x 20 网格的圆只覆盖 400 格中的约 316 格,菱形 220 格,三角形 200 格。如果想让带形状的迷宫拥有和长方形一样多的格子,把网格调大一些即可。

给小孩子用,10 x 10 大约一分钟能走完,约 39 步。20 x 20 是分量合适的谜题,约 96 步;40 x 40 就比较长了,超过 200 步。网格每边可从 5 到 40 格,两条边不必相等。

可以,下载 SVG 保存的正是你看到的那张图。SVG 是矢量格式,放大到任何尺寸都不会模糊,如果想改配色或放进练习纸,可以用 Inkscape、Illustrator 或浏览器打开。

是。路径由广度优先搜索求得,这种方法从原理上就给出最短路径。在困难迷宫里那本来就是唯一一条路,但在简单难度下,重新打通的死胡同会形成环路和多条通道,因此给出最短的那条才是有意义的答案。

怎么做一个可打印的迷宫?

选一个每边 5 到 40 格的网格,再选形状和难度,然后打印或下载为 SVG。迷宫用递归回溯法开凿,所以必定有解,难度决定留下多少死胡同。每个迷宫都有种子,同一个以后还能再打印。