function* generateNeighbours(grid, colStart, colEnd, row) {
const isChar = (i, j) => {
if (i < 0 || j < 0 || i >= grid.length || j >= grid.length) {
return false;
}
const char = grid[i][j];
if (char !== "." && isNaN(parseInt(char))) {
return {
char,
rowIndex: i,
colIndex: j
};
}
return null;
};
for (let col = colStart; col < colEnd; col++) {
if (col === colStart) {
yield isChar(row, col - 1);
yield isChar(row - 1, col - 1);
yield isChar(row + 1, col - 1);
}
if (col === colEnd - 1) {
yield isChar(row, col + 1);
yield isChar(row - 1, col + 1);
yield isChar(row + 1, col + 1);
}
yield isChar(row - 1, col);
yield isChar(row + 1, col);
}
}