1const goal = [1,2,3,4,5,6,7,8,0]; // 目标布局
2const queue = [start]; // BFS 队列
3const seen = new Set([key(start)]); // 已访问状态
4while (queue.length) { // BFS 主循环
5 const s = queue.shift(); // 出队:当前布局
6 if (key(s) === key(goal))
7 return reconstructPath(s);
8 for (const dir of [[-1,0],[1,0],[0,-1],[0,1]]) {
9 const ns = move(s, dir); // 空格沿 dir 滑动一步
10 if (!seen.has(key(ns))) {
11 seen.add(key(ns)); queue.push(ns);
12 }
13 }
14}