Size% = 8 Cell% = 32 VDU 23,22,Size%*Cell%;Size%*Cell%;Cell%,Cell%,16,128+8,5 *font Arial Unicode MS,16 GCOL 3,11 FOR i% = 0 TO Size%-1 STEP 2 RECTANGLE FILL i%*Cell%*2,0,Cell%*2,Size%*Cell%*2 RECTANGLE FILL 0,i%*Cell%*2,Size%*Cell%*2,Cell%*2 NEXT num% = FNqueens(Size%, Cell%) SYS "SetWindowText", @hwnd%, "Total " + STR$(num%) + " solutions" REPEAT : WAIT 1 : UNTIL FALSE END DEF FNqueens(n%, s%) LOCAL i%, j%, m%, p%, q%, r%, a%(), b%(), c%() DIM a%(n%), b%(n%), c%(4*n%-2) FOR i% = 1 TO DIM(a%(),1) : a%(i%) = i% : NEXT m% = 0 i% = 1 j% = 0 r% = 2*n%-1 REPEAT i% -= 1 j% += 1 p% = 0 q% = -r% REPEAT i% += 1 c%(p%) = 1 c%(q%+r%) = 1 SWAP a%(i%),a%(j%) p% = i% - a%(i%) + n% q% = i% + a%(i%) - 1 b%(i%) = j% j% = i% + 1 UNTIL j% > n% OR c%(p%) OR c%(q%+r%) IF c%(p%)=0 IF c%(q%+r%)=0 THEN IF m% = 0 THEN FOR p% = 1 TO n% MOVE 2*s%*(a%(p%)-1)+6, 2*s%*p%+6 PRINT "♛"; NEXT ENDIF m% += 1 ENDIF j% = b%(i%) WHILE j% >= n% AND i% <> 0 REPEAT SWAP a%(i%), a%(j%) j% = j%-1 UNTIL j% < i% i% -= 1 p% = i% - a%(i%) + n% q% = i% + a%(i%) - 1 j% = b%(i%) c%(p%) = 0 c%(q%+r%) = 0 ENDWHILE UNTIL i% = 0 = m%