September 2017 Update
This commit is contained in:
parent
bba7bfd280
commit
ba8067c3b7
14570 changed files with 153136 additions and 63871 deletions
9
Task/N-queens-problem/Zkl/n-queens-problem-1.zkl
Normal file
9
Task/N-queens-problem/Zkl/n-queens-problem-1.zkl
Normal 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
|
||||
}
|
||||
6
Task/N-queens-problem/Zkl/n-queens-problem-2.zkl
Normal file
6
Task/N-queens-problem/Zkl/n-queens-problem-2.zkl
Normal 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))
|
||||
Loading…
Add table
Add a link
Reference in a new issue