Tengo dificultades para reescribir la ruta desde el principio hasta el final después de encontrar una solución BFS.
He encontrado otras preguntas similares a la mía, pero aún no podía entender qué hacer. Estoy guardando las notas visitadas en nodeTable, pero solo devuelve todos los nodos visitados, no la ruta óptima.
La idea es encontrar el camino más corto en una matriz binaria, donde los únicos caminos posibles son a través de celdas marcadas con 1.
https://github.com/gabrielgcosta83/Comandante
const C = Map.width; const R = Map.height; const startPoint = [308,863]; const endPoint = [473,894]; const rowQ = []; const colQ = []; let reachedEnd = false; let nodeTable = []; let dr = [1,-1,0,0,1,-1,1,-1]; let dc = [0,0,-1,1,1,-1,-1,1]; function solve() { rowQ.push(startPoint[0]); colQ.push(startPoint[1]); visitedMap[startPoint[0],startPoint[1]] = true; while ( rowQ.length > 0 ) { const r = rowQ[0]; const c = colQ[0]; rowQ.splice(0,1); colQ.splice(0,1); if (endPoint[0] == r && endPoint[1] == c) { reachedEnd = true; break; } explore_neighbors(r,c); } if (reachedEnd) { console.log("Solucao encontrada: ", endPoint); return; } else { console.log("Solucao nao encontrada"); return; } } function explore_neighbors(r,c) { for (let i = 0; i < 8 ; i++) { let rr = r + dr[i]; let cc = c + dc[i]; if (rr < 0 || cc < 0) { continue } if (rr > R || cc > C) { continue } if (visitedMap[rr][cc] == true ) { continue } if (roadMap[rr][cc] == 0) { continue } addPointToTable([rr,cc],"yellow"); rowQ.push(rr); colQ.push(cc); visitedMap[rr][cc] = true; nodeTable.push([rr,cc]); } }