This page (revision-9) was last changed on 03-Feb-2023 15:21 by Gromit 

This page was created on 13-Mar-2010 14:34 by Carsten Strotmann

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
9 03-Feb-2023 15:21 3 KB Gromit to previous
8 26-Jan-2011 10:35 3 KB Gromit to previous | to last
7 26-Jan-2011 10:34 3 KB Gromit to previous | to last
6 26-Jan-2011 10:33 3 KB Gromit to previous | to last
5 26-Jan-2011 10:30 2 KB Gromit to previous | to last
4 26-Jan-2011 10:28 2 KB Gromit to previous | to last
3 13-Mar-2010 14:36 301 bytes Carsten Strotmann to previous | to last
2 13-Mar-2010 14:35 298 bytes Carsten Strotmann to previous | to last
1 13-Mar-2010 14:34 180 bytes Carsten Strotmann to last

Page References

Incoming links Outgoing links

Version management

Difference between version and

At line 11 added 5 lines
----
{{{
; 8-QUEENS SOLUTION
; BY DAVE OBLAD
; (c) 1985, ANTIC PUBLISHING
At line 17 added 138 lines
BYTE ARRAY T(96),P(8),I(8),O(8),M(8)
BYTE A,B,C,D,X,Y,L1,L2,L3,OPT=53279
PROC SEARCH()
FOR X=0 TO D
DO
Y=X*8 B=1
FOR A=0 TO 7
DO
IF T(Y+A)#O(A) THEN B=0 FI
OD
IF B=1 THEN RETURN FI
OD
RETURN
PROC ROTATE()
FOR A=0 TO 7
DO
B=7-O(A) M(B)=A
OD
FOR A=0 TO 7
DO
O(A)=M(A)
OD
RETURN
PROC TEST()
FOR A=0 TO 7
DO O(A)=P(A) OD
FOR L1=0 TO 1
DO
FOR L2=0 TO 1
DO
FOR L3=0 TO 3
DO
SEARCH()
IF B=1 THEN RETURN FI
ROTATE()
OD
FOR A=0 TO 7
DO M(A)=O(A) OD
FOR A=0 TO 7
DO O(7-A)=M(A) OD
OD
FOR A=0 TO 7
DO O(A)=7-O(A) OD
OD
B=0
RETURN
PROC KEEP()
X=D*8
FOR A=0 TO 7
DO T(X+A)=P(A) OD
RETURN
PROC DISPLAY()
;REMOVE 5 SEMI-COLONS BELOW
;FOR UNIQUE SOLUTIONS ONLY!
;IF D#0 THEN TEST()
; IF B=1 THEN RETURN
; ELSE KEEP()
; FI
;FI
FOR Y=0 TO 7
DO
FOR X=0 TO 7
DO
POSITION(X+15,Y+8)
IF P(Y)=X THEN PRINT("Q")
ELSE PRINT("+") FI
OD
OD
POSITION(18,18)
D==+1 PRINTB(D)
RETURN
PROC TRY()
FOR Y=0 TO 6
DO
FOR X=Y+1 TO 7
DO
A=P(X)-P(Y) B=X-Y
IF A>7 THEN A=255-A+1 FI
IF A=B THEN RETURN FI
OD
OD
DISPLAY()
RETURN
PROC SWAP()
C=0 I(C)==+1
WHILE I(C)=C+2
DO› I(C)=0 C==+1 I(C)==+1
IF C<7 THEN
FOR B=0 TO C
DO
A=P(B) P(B)=P(B+1) P(B+1)=A
OD
FI
OD
A=P(0) P(0)=P(1) P(1)=A
RETURN
PROC MAIN()
BYTE CONSOLE=53279
DO
GRAPHICS(0) POKE(752,1)
POSITION(8,0)
PRINTE(" 8-QUEENS SOLUTIONS")
PRINTE(" BY DAVE OBLAD")
FOR A=0 TO 7 DO P(A)=A I(A)=0 OD
FOR A=0 TO 96 DO T(A)=0 OD
D=0
DO
TRY() SWAP()
FOR A=0 TO 7
DO
IF A#P(A) THEN EXIT FI
OD
IF A=8 OR OPT#7 THEN EXIT FI
OD
IF A=8 THEN POSITION(15,20)
PRINTE("COMPLETE")
PUTE()
PRINTE("PRESS ÓÔÁÒÔ TO RE-RUN")
FI
DO
UNTIL CONSOLE < 7
OD
OD
RETURN
}}}
----