Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
78
Task/N-queens-problem/GAP/n-queens-problem.gap
Normal file
78
Task/N-queens-problem/GAP/n-queens-problem.gap
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
NrQueens := function(n)
|
||||
local a, up, down, m, sub;
|
||||
a := [1 .. n];
|
||||
up := ListWithIdenticalEntries(2*n - 1, true);
|
||||
down := ListWithIdenticalEntries(2*n - 1, true);
|
||||
m := 0;
|
||||
sub := function(i)
|
||||
local j, k, p, q;
|
||||
for k in [i .. n] do
|
||||
j := a[k];
|
||||
p := i + j - 1;
|
||||
q := i - j + n;
|
||||
if up[p] and down[q] then
|
||||
if i = n then
|
||||
m := m + 1;
|
||||
else
|
||||
up[p] := false;
|
||||
down[q] := false;
|
||||
a[k] := a[i];
|
||||
a[i] := j;
|
||||
sub(i + 1);
|
||||
up[p] := true;
|
||||
down[q] := true;
|
||||
a[i] := a[k];
|
||||
a[k] := j;
|
||||
fi;
|
||||
fi;
|
||||
od;
|
||||
end;
|
||||
sub(1);
|
||||
return m;
|
||||
end;
|
||||
|
||||
Queens := function(n)
|
||||
local a, up, down, v, sub;
|
||||
a := [1 .. n];
|
||||
up := ListWithIdenticalEntries(2*n - 1, true);
|
||||
down := ListWithIdenticalEntries(2*n - 1, true);
|
||||
v := [];
|
||||
sub := function(i)
|
||||
local j, k, p, q;
|
||||
for k in [i .. n] do
|
||||
j := a[k];
|
||||
p := i + j - 1;
|
||||
q := i - j + n;
|
||||
if up[p] and down[q] then
|
||||
if i = n then
|
||||
Add(v, ShallowCopy(a));
|
||||
else
|
||||
up[p] := false;
|
||||
down[q] := false;
|
||||
a[k] := a[i];
|
||||
a[i] := j;
|
||||
sub(i + 1);
|
||||
up[p] := true;
|
||||
down[q] := true;
|
||||
a[i] := a[k];
|
||||
a[k] := j;
|
||||
fi;
|
||||
fi;
|
||||
od;
|
||||
end;
|
||||
sub(1);
|
||||
return v;
|
||||
end;
|
||||
|
||||
NrQueens(8);
|
||||
a := Queens(8);;
|
||||
PrintArray(PermutationMat(PermList(a[1]), 8));
|
||||
|
||||
[ [ 1, 0, 0, 0, 0, 0, 0, 0 ],
|
||||
[ 0, 0, 0, 0, 1, 0, 0, 0 ],
|
||||
[ 0, 0, 0, 0, 0, 0, 0, 1 ],
|
||||
[ 0, 0, 0, 0, 0, 1, 0, 0 ],
|
||||
[ 0, 0, 1, 0, 0, 0, 0, 0 ],
|
||||
[ 0, 0, 0, 0, 0, 0, 1, 0 ],
|
||||
[ 0, 1, 0, 0, 0, 0, 0, 0 ],
|
||||
[ 0, 0, 0, 1, 0, 0, 0, 0 ] ]
|
||||
Loading…
Add table
Add a link
Reference in a new issue