function recursiveRegionCheck(x, y, grid1, grid2) { let result = true; if (!(+grid1[y][x] === 1 && +grid2[y][x] === 1)) { result = false; } grid1[y][x] = 0; grid2[y][x] = 0; // Left (Probably unnecesary since we're looping from left to right) if (x > 0 && (+grid1[y][x - 1] === 1 || +grid2[y][x - 1] === 1)) { result = recursiveRegionCheck(x - 1, y, grid1, grid2) && result; } // Right if ( x < grid1[y].length - 1 && (+grid1[y][x + 1] === 1 || +grid2[y][x + 1] === 1) ) { result = recursiveRegionCheck(x + 1, y, grid1, grid2) && result; } // top if (y > 0 && (+grid1[y - 1][x] === 1 || +grid2[y - 1][x] === 1)) { result = recursiveRegionCheck(x, y - 1, grid1, grid2) && result; } // bottom if ( y < grid1.length - 1 && (+grid1[y + 1][x] === 1 || +grid2[y + 1][x] === 1) ) { result = recursiveRegionCheck(x, y + 1, grid1, grid2) && result; } return result; } function countMatches(grid1, grid2) { // Write your code here let regionCount = 0; grid1 = grid1.map((row) => row.split("")); grid2 = grid2.map((row) => row.split("")); for (let y = 0; y < grid1.length; y++) { for (let x = 0; x < grid1[y].length; x++) { if (+grid1[y][x] === 0 && +grid2[y][x] === 0) { continue; } if (recursiveRegionCheck(x, y, grid1, grid2)) { regionCount++; } } } return regionCount; }