Data update
This commit is contained in:
parent
5150844a7d
commit
4bb20c9b71
7735 changed files with 38060 additions and 199180 deletions
|
|
@ -1,10 +1,11 @@
|
|||
fcn isAttacked(q, x,y) // ( (r,c), x,y ) : is queen at r,c attacked by q@(x,y)?
|
||||
{ r,c:=q; (r==x or c==y or r+c==x+y or r-c==x-y) }
|
||||
fcn isSafe(r,c,qs) // queen safe at (r,c)?, qs=( (r,c),(r,c)..) solution so far
|
||||
{ ( not qs.filter1(isAttacked,r,c) ) }
|
||||
// ( (r,c), x,y ) : is queen at r,c attacked by q@(x,y)?
|
||||
fcn isAttacked(q, x,y){ r,c := q; (r==x or c==y or r+c==x+y or r-c==x-y) }
|
||||
// queen safe at (r,c)?, qs=( (r,c),(r,c)..) solution so far
|
||||
fcn isSafe(r,c,qs){ ( not qs.filter1(isAttacked,r,c) ) }
|
||||
fcn queensN(N=8,row=1,queens=T){
|
||||
qs:=[1..N].filter(isSafe.fpM("101",row,queens)) #isSafe(row,?,( (r,c),(r,c).. )
|
||||
.apply(fcn(c,r,qs){ qs.append(T(r,c)) },row,queens);
|
||||
if (row == N) return(qs);
|
||||
return(qs.apply(self.fcn.fp(N,row+1)).flatten());
|
||||
// isSafe(row,?,( (r,c),(r,c).. )
|
||||
qs := [1..N].filter(isSafe.fpM("101",row,queens))
|
||||
.apply(fcn(c,r,qs){ qs.append(T(r,c)) },row,queens);
|
||||
if(row == N) return(qs);
|
||||
return(qs.apply( self.fcn.fp(N,row+1) ).flatten());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,8 @@
|
|||
queens := queensN(4);
|
||||
N, queens := 4, queensN(N);
|
||||
println(queens.len()," solution(s):");
|
||||
queens.apply2(Console.println);
|
||||
foreach s in (queens){
|
||||
println(s,":");
|
||||
b = (b := List.createLong(N,"-")).apply(b.copy); // NxN array
|
||||
s.apply2('wrap([(r,c)]){ b[r - 1][c - 1] = "Q" });
|
||||
b.apply("concat","").concat("\n").println();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue