function findPathB(origin, dest) {
let found = false;
let visited = {};
const isDest = (p) => on(p, dest);
const isOrigin = (p) => on(p, origin);
let queue = [[origin, null]];
let current, prev;
while (([current, prev] = queue.shift())) {
visited[current] = prev;
if (isDest(current)) break;
for (let dir of DIRS) {
let next = move(current, dir);
if (isWall(next)) continue;
if (visited[next]) continue;
queue.push([next, current]);
}
}
function assemblePath() {
let p = dest;
const res = [p];
while ((p = visited[p])) {
if (isOrigin(p)) break;
res.push(p);
}
return res;
}
return assemblePath().reverse();
}