网格编辑器
画障碍、设起终点、导入课程题目,其他工具共用它。
用途:在网格上直接构造或载入一道题,供其他工具使用。
怎么用
- 鼠标 / 触屏:拖动画障碍,从障碍上开始拖动则擦除;拖动起点 S 或终点 G 移动它们。上方可切换固定画笔。
- 键盘:先点一下网格获得焦点,方向键移动光标,空格切换障碍,S / G 放置起点 / 终点,Ctrl+Z 撤销。
- 载入:课程三题,或按编号(从 0 开始)载入任意一道验证题;「随机」按每格 30% 的概率放障碍。
- 分享:「复制文本」得到仓库
puzzles/*.txt的格式;「粘贴文本」可导入同样的格式(size/start/goal/obstacle行,或grid后接 25 行.#);「复制链接」把网格编码进网址的#p=,其他工具页面打开时会读取它。
数据来源
- 课程三题取自项目仓库的
puzzles/case1.txt–case3.txt(提交fa87b65),以编码形式内置在页面里;站点测试核对它们与数据包中的前三题一致。 - 验证题来自站点的数据包
/lab-data/:由仓库puzzles/sets/*.bin按validate_all.m的顺序(先课程三题,再各题集)打包,共 29,746 题,每题 89 字节,按需分块加载(每块 1,024 题)。 - 侧栏的 4 / 8 邻域最短距离在浏览器里现算(TypeScript 的 BFS 与 A*)。
- 文本格式的解析按仓库
read_puzzle.m的规则:#开头的注释行、坐标从 1 开始、缺省起点 (1, 25)、终点 (25, 1)。