1
var allCellsDistOrder = function (rows, cols, rCenter, cCenter) {5
//create a new "visited" cells matrix6
let visited = new Array(rows).fill([]);7
for (i = 0; i < visited.length; i++) {8
visited[i] = new Array(cols).fill(0);11
const computeDistances = (row, col, rCenter, cCenter) => {12
if (row >= rows || col >= cols) return;13
if (visited[row][col]) return; // don't compute distance again if cell already visited14
visited[row][col] = 1;16
let distance = Math.abs(rCenter - row) + Math.abs(cCenter - col);17
if (distances[distance]) {18
distances[distance].add([row, col]);20
distances[distance] = new Set();21
distances[distance].add([row, col]);24
computeDistances(row + 1, col, rCenter, cCenter);25
computeDistances(row, col + 1, rCenter, cCenter);28
computeDistances(0, 0, rCenter, cCenter);30
distances.forEach((distance) => {31
result.push(...distance);