1
var solveNQueens = function (n) {2
const board = new Array(n).fill().map(() => new Array(n).fill("."));5
const pushToResult = () =>6
result.push(board.map((row) => row.reduce((acc, val) => acc + val, "")));8
const isQueenPlaced = (i, j) => {9
if (i < 0 || j < 0) return false;10
if (i >= n || j >= n) return false;11
return board[i][j] !== ".";13
const isAttacked = (i, j) => {14
const isSameDiagonalLeft = () => {17
while (p >= 0 && q >= 0) {18
if (isQueenPlaced(p, q)) return true;24
const isSameDiagonalRight = () => {27
while (p >= 0 && q < n) {28
if (isQueenPlaced(p, q)) return true;35
return isSameDiagonalLeft() || isSameDiagonalRight();40
const backtrack = (i = 0, j = 0, queensPlaced = 0) => {41
if (queensPlaced === n) return pushToResult();42
if (i >= n || j >= n) return;43
if (rowsPlaced[i]) return;44
if (colPlaced[j]) return backtrack(i, j + 1, queensPlaced);46
if (!isAttacked(i, j)) {50
backtrack(i + 1, 0, queensPlaced + 1);53
rowsPlaced[i] = false;56
return backtrack(i, j + 1, queensPlaced);