-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathferz.js
More file actions
36 lines (32 loc) · 954 Bytes
/
Copy pathferz.js
File metadata and controls
36 lines (32 loc) · 954 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
function sFact(num)
{
var rval=1;
for (var i = 2; i <= num; i++)
rval = rval * i;
return rval;
}
let size = 8;
let variants = sFact(size*size)/(sFact(size) * sFact(size*size - size));
console.table([{...{'X': size}, ...{'Y': size}, ...{'Variants': variants}}]);
let nSolutions = 0;
let queens = [];
function Solve(n)
{
if(n===undefined) n = 0;
if(n >= size){
nSolutions++;
return;
}
for(var r=0, c; r < size; r++){
for(c=0; c < n; c++)
if( queens[c] === r
|| Math.abs(queens[c]-r) === n-c )
break;
if(c === n){
queens[n] = r;
Solve(n+1);
}
}
}
(Solve());
console.log(`Number of solutions: ${nSolutions}`);