Data update

This commit is contained in:
Ingy döt Net 2026-02-01 16:33:20 -08:00
parent 5150844a7d
commit 4bb20c9b71
7735 changed files with 38060 additions and 199180 deletions

View file

@ -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());
}

View file

@ -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();
}