网格编辑器

画障碍、设起终点、导入课程题目,其他工具共用它。

用途:在网格上直接构造或载入一道题,供其他工具使用。

障碍
10 格
起点 → 终点
(1,25) → (25,1)
4 邻域最短
48 步
8 邻域最短
2 + 23√2

坐标按仓库约定从 1 开始(行, 列)。灰线是一条 4 邻域最短路。

  • 起点 S
  • 终点 G
  • 障碍

鼠标或触屏:拖动画障碍,从障碍上开始拖动则擦除,拖起点 / 终点可移动。键盘:先点一下网格,方向键移动光标,空格切换障碍,S / G 放置起点 / 终点,Ctrl+Z 撤销。

怎么用

  • 鼠标 / 触屏:拖动画障碍,从障碍上开始拖动则擦除;拖动起点 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)。

本页目录