迷宫生成器
制作可打印的迷宫,四种形状、三档难度。每个迷宫都有种子可重现,还能显示答案并下载 SVG 矢量文件。
这是种子 500832 对应的 20 x 20 迷宫。再次输入该种子即可打印完全相同的迷宫,无论在本设备还是其他设备上。
迷宫是怎么生成的
生成器从一整片实心墙的网格开始,用递归回溯法在其中开路。它随机走向一个尚未到过的相邻格子,推倒两者之间的墙;一旦无路可走,就沿着自己的足迹往回退,直到找到还有新方向可去的格子。每个格子恰好被访问一次,所以每个迷宫都是完全连通的,必定存在一条通路。由此产生的蜿蜒长廊,正是让迷宫像迷宫而不像一堆短枝拼成的格架的原因。
难度真正改变了什么
这里的难度不是含糊的滑块,而是被重新打通的死胡同占多大比例。困难保留刚开凿出来的样子,也就是只有一条路径、错拐机会最多的完美迷宫。中等重新打通四分之一的死胡同,简单打通七成,把那些盲道变成可以一直穿过去的环路。在 20 x 20 的网格上大致是困难 42 个死胡同、中等 32 个、简单 14 个,最短路径也从约 143 步缩到 67 步。屏幕上这一个迷宫的统计就列在它上方,你能看到实际拿到的是什么。
长方形、圆形、菱形和三角形
四种形状都是从同一张方格网上剪出的轮廓:凡是中心落在轮廓之外的格子,在开凿之前就被直接舍去。20 x 20 的网格作长方形有 400 格,作圆形 316 格,作菱形 220 格,作三角形 200 格,所以带形状的迷宫比同样标称尺寸的长方形要小一些,也快一点。由于剪出形状可能在角落里孤立出一两个格子,生成器只保留最大的连通区块再在其中开凿,这就是带形状的迷宫从不会莫名缺一块的原因。
种子与重新打印同一个迷宫
每个迷宫都由一个种子生成,种子会随结果一并显示。用同样的尺寸、形状和难度输入同样的种子,就能得到一模一样的迷宫,今天或下学期,在这里或在另一台电脑上都一样。这正是它在课堂上好用的地方:把迷宫发下去,留好种子,之后用同样的设置勾上答案再打印一份。种子可以是词而不是数字,所以 四年级-周一 和 481029 一样好使。
值得一记
- 绿点是入口,红点是出口,外墙只在这两处开口。
- 图形以毫米作图,因此按 100% 打印就能得到实际尺寸的纸样。
- SVG 是矢量文件,放大到任何尺寸都不会糊,事后还能编辑。
- 显示的答案是最短路径,这一点在简单难度尤其重要,因为环路会带来不止一条通道。
- 不保存任何内容。迷宫在我们的服务器上生成,结果送出后即丢弃。