function queens(n) {
let ways = [];
function place(positions) {
let m = positions.length;
if (m == n) {
ways.push(positions);
return;
}
const hasDiagonal = (i) => {
for (let j = 0; j < m; j++) {
if (isDiagonal(m, i, j, positions[j])) return true
}
return false
}
for (let i = 0; i < n; i++) {
if (positions.includes(i)) continue;
if (hasDiagonal(i)) continue;
place([...positions, i]);
}
}
place([]);
return ways;
}