September 2017 Update

This commit is contained in:
Ingy döt Net 2017-09-23 10:01:46 +02:00
parent bba7bfd280
commit ba8067c3b7
14570 changed files with 153136 additions and 63871 deletions

View file

@ -0,0 +1,9 @@
fcn isAttacked([(x,y)],a,b) // explode list (x,y) into args x & y
{ (x==a or y==b or x+y==a+b or x-y==a-b) }
fcn isSafe(a,b,qs){(not qs.filter1(isAttacked,a,b))} // stop at first attack
fcn queensN(N=8,row=1,queens=T){ // T is read only list
qs := [1..N].filter(isSafe.fpM("101",row,queens)) // fpM makes r&q first & third args
.apply(fcn(c,r,qs){qs+T(r,c)},row,queens);
if (row == N) return(qs);
return(qs.apply(self.fcn.fp(N,row+1)).flatten()); // recurse
}

View file

@ -0,0 +1,6 @@
queens := queensN(4);
println(queens.len()," solution(s):");
queens.apply2(Console.println);
--> 2 solution(s):
L(L(1,2),L(2,4),L(3,1),L(4,3))
L(L(1,3),L(2,1),L(3,4),L(4,2))