!------------------------------------------------ ! QUEENS.R : solve queens problem on a NxN board !------------------------------------------------ PROGRAM QUEENS DIM COL%[15] BEGIN MAXSIZE%=15 PRINT(TAB(25);" --- PROBLEMA DELLE REGINE --- ") PRINT PRINT("Board dimension ";) INPUT(N%) PRINT IF (N%<1 OR N%>MAXSIZE%) THEN PRINT("Illegal dimension!!") ELSE FOR CURCOLNBR%=1 TO N% COL%[CURCOLNBR%]=0 END FOR CURCOLNBR%=1 WHILE CURCOLNBR%>0 DO PLACEDAQUEEN%=FALSE I%=COL%[CURCOLNBR%]+1 WHILE (I%<=N%) AND NOT PLACEDAQUEEN% DO PLACEDAQUEEN%=TRUE J%=1 WHILE PLACEDAQUEEN% AND (J%I% J%=J%+1 END WHILE IF PLACEDAQUEEN% THEN DIAGNBR%=I%+CURCOLNBR% J%=1 WHILE PLACEDAQUEEN% AND (J%DIAGNBR% J%=J%+1 END WHILE ELSE END IF IF PLACEDAQUEEN% THEN DIAGNBR%=I%-CURCOLNBR% J%=1 WHILE PLACEDAQUEEN% AND (J%DIAGNBR% J%=J%+1 END WHILE ELSE END IF IF NOT PLACEDAQUEEN% THEN I%=I%+1 ELSE COL%[CURCOLNBR%]=I% END IF END WHILE IF NOT PLACEDAQUEEN% THEN COL%[CURCOLNBR%]=0 CURCOLNBR%=CURCOLNBR%-1 ELSE IF CURCOLNBR%=N% THEN NSOL%=NSOL%+1 PRINT("Soluzione";NSOL%;":";) FOR I%=1 TO N% PRINT(COL%[I%];) END FOR PRINT ELSE CURCOLNBR%=CURCOLNBR%+1 END IF END IF END WHILE PRINT("Search completed") REPEAT GET(CH$) UNTIL CH$<>"" END IF END PROGRAM