(FILECREATED "16-Aug-85 09:37:33" {ERIS}<LISPUSERS>NQUEENS.;4 8266 changes to: (FNS NQUEENS NQUEENSINIT) previous date: "16-Aug-85 09:06:26" {ERIS}<LISPUSERS>NQUEENS.;3) (* Copyright (c) 1982, 1985 by Eric Schoen. All rights reserved.) (PRETTYCOMPRINT NQUEENSCOMS) (RPAQQ NQUEENSCOMS ((FNS * NQUEENSFNS) (BITMAPS * NQUEENSBITMAPS) (ADDVARS (GLOBALVARS BSQUARE WSQUARE BQUEEN WQUEEN NQUEENSGRID NQUEENSBOARD)))) (RPAQQ NQUEENSFNS (CONFLICTP NQUEENS NQUEENSINIT PLACEQUEEN REMOVELASTDISPLAYEDQUEEN REMOVELASTQUEEN WAITFORMOVE \NQUEENS)) (DEFINEQ (CONFLICTP [LAMBDA (QLST COLUMN ROW) (* edited: | "23-Sep-82 15:54") (for Q in QLST do (COND | ([OR (EQUAL ROW (CAR Q)) | (EQUAL COLUMN (CDR Q)) | (EQUAL (ABS (IDIFFERENCE ROW (CAR Q))) | (ABS (IDIFFERENCE COLUMN | (CDR Q] | (RETURN T))) | finally (RETURN NIL]) (NQUEENS (LAMBDA (N BETWEENMOVES) (* ejs: "16-Aug-85 09:32") (OR BETWEENMOVES (SETQ BETWEENMOVES 250)) (bind (WINDOW&GRID ←(NQUEENSINIT N)) while T do (LET (QLST NEXTMOVE) (DECLARE (SPECVARS QLST NEXTMOVE)) (NLSETQ (\NQUEENS WINDOW&GRID QLST N 1)) (NQUEENSINIT N WINDOW&GRID)) (BLOCK 5000)))) (NQUEENSINIT (LAMBDA (N OLDWINDOW&GRID) (* ejs: "16-Aug-85 09:36") (DECLARE (LOCALVARS NQUEENSBOARD NQUEENSGRID)) (PROG ((BOARDPOS (OR OLDWINDOW&GRID (GETBOXPOSITION (ITIMES 40 N) (ITIMES 40 N)))) NQUEENSBOARD NQUEENSGRID) (COND (OLDWINDOW&GRID (SETQ NQUEENSBOARD (CAR OLDWINDOW&GRID)) (SETQ NQUEENSGRID (CDR OLDWINDOW&GRID))) (T (SETQ NQUEENSBOARD (CREATEW (create REGION LEFT ←(fetch XCOORD of BOARDPOS) BOTTOM ←(fetch YCOORD of BOARDPOS) WIDTH ←(IPLUS (ITIMES N 40) 8) HEIGHT ←(IPLUS (ITIMES N 40) 8)))))) (COND (OLDWINDOW&GRID (CLEARW NQUEENSBOARD) (GRID (create REGION LEFT ← 0 BOTTOM ← 0 WIDTH ← 40 HEIGHT ← 40) N N 1 NQUEENSBOARD)) (T (GRID (SETQ NQUEENSGRID (create REGION LEFT ← 0 BOTTOM ← 0 WIDTH ← 40 HEIGHT ← 40)) N N 1 NQUEENSBOARD))) (for I from 0 to (SUB1 N) do (for J from 0 to (SUB1 N) when (EVENP (IPLUS I J)) do (BITBLT BSQUARE 1 1 NQUEENSBOARD (ADD1 (LEFTOFGRIDCOORD I NQUEENSGRID)) (ADD1 (BOTTOMOFGRIDCOORD J NQUEENSGRID)) 38 38 (QUOTE INPUT) (QUOTE REPLACE)))) (RETURN (OR OLDWINDOW&GRID (CONS NQUEENSBOARD NQUEENSGRID)))))) (PLACEQUEEN (LAMBDA (WINDOW&GRID QLST COLUMN ROW) (* ejs: "16-Aug-85 08:59") (WAITFORMOVE) (BITBLT (COND ((EVENP (IPLUS ROW COLUMN)) BQUEEN) (T WQUEEN)) 1 1 (CAR WINDOW&GRID) (ADD1 (LEFTOFGRIDCOORD (SUB1 COLUMN) (CDR WINDOW&GRID))) (ADD1 (BOTTOMOFGRIDCOORD (SUB1 ROW) (CDR WINDOW&GRID))) 38 38 (QUOTE INPUT) (QUOTE REPLACE)) (COND (QLST (APPEND (LIST (CONS ROW COLUMN)) QLST)) (T (LIST (CONS ROW COLUMN)))))) (REMOVELASTDISPLAYEDQUEEN (LAMBDA (QLST) (* ejs: "23-SEP-82 18:38") (PROG ((LASTQ (CAR QLST))) (BITBLT (COND ((EVENP (IPLUS (SUB1 (CAR LASTQ)) (SUB1 (CDR LASTQ)))) BSQUARE) (T WSQUARE)) 1 1 NQUEENSBOARD (ADD1 (LEFTOFGRIDCOORD (SUB1 (CDR LASTQ)) NQUEENSGRID)) (ADD1 (BOTTOMOFGRIDCOORD (SUB1 (CAR LASTQ)) NQUEENSGRID)) 38 38 (QUOTE INPUT) (QUOTE REPLACE))))) (REMOVELASTQUEEN (LAMBDA (WINDOW&GRID QLST) (* ejs: "16-Aug-85 09:00") (PROG ((LASTQ (CAR QLST))) (WAITFORMOVE) (BITBLT (COND ((EVENP (IPLUS (SUB1 (CAR LASTQ)) (SUB1 (CDR LASTQ)))) BSQUARE) (T WSQUARE)) 1 1 (CAR WINDOW&GRID) (ADD1 (LEFTOFGRIDCOORD (SUB1 (CDR LASTQ)) (CDR WINDOW&GRID))) (ADD1 (BOTTOMOFGRIDCOORD (SUB1 (CAR LASTQ)) (CDR WINDOW&GRID))) 38 38 (QUOTE INPUT) (QUOTE REPLACE)) (RETURN (CDR QLST))))) (WAITFORMOVE [LAMBDA NIL (* lmm "14-Mar-85 17:36") (BLOCK NIL NEXTMOVE) (SETQ NEXTMOVE (SETUPTIMER BETWEENMOVES NEXTMOVE]) (\NQUEENS (LAMBDA (WINDOW&GRID QLST NQS NEXTCOL) (* ejs: "16-Aug-85 08:58") (for R from 1 to NQS do (COND ((NOT (CONFLICTP QLST NEXTCOL R)) (SETQ QLST (PLACEQUEEN WINDOW&GRID QLST NEXTCOL R)) (COND ((ILESSP NEXTCOL NQS) (COND ((NOT (\NQUEENS WINDOW&GRID QLST NQS (ADD1 NEXTCOL))) (SETQ QLST (REMOVELASTQUEEN WINDOW&GRID QLST))))) (T (ERROR!)))))))) ) (RPAQQ NQUEENSBITMAPS (BQUEEN BSQUARE WQUEEN WSQUARE)) (RPAQ BQUEEN (READBITMAP)) (40 40 "IBDIBDIBDI@@" "BDIBDIBDIB@@" "DIBDIBDIBD@@" "IBDIBDIBDI@@" "BDIBDIBDIB@@" "DIBDIBDIBD@@" "IBDIBDIBDI@@" "BDIBDIBDIB@@" "DIBDIBDIBD@@" "IBDIBDIBDI@@" "BDIBDIBDIB@@" "DIBDHBDIBD@@" "IBDICHIBDI@@" "BDIBBIBDIB@@" "DI@@BH@ABD@@" "IBAMFLG@DI@@" "BDBDDDDHIB@@" "DIDCLGHEBD@@" "IBD@@@@DDI@@" "BDB@@@@HIB@@" "DIAGOOIABD@@" "IBE@@@ABDI@@" "BDI@@@ADIB@@" "DIA@@@AABD@@" "IBEOOOOBDI@@" "BDH@@@@DIB@@" "DIBDIBDIBD@@" "IBDIBDIBDI@@" "BDIBDIBDIB@@" "DIBDIBDIBD@@" "IBDIBDIBDI@@" "BDIBDIBDIB@@" "DIBDIBDIBD@@" "IBDIBDIBDI@@" "BDIBDIBDIB@@" "DIBDIBDIBD@@" "IBDIBDIBDI@@" "BDIBDIBDIB@@" "DIBDIBDIBD@@" "IBDIBDIBDI@@") (RPAQ BSQUARE (READBITMAP)) (40 40 "IBDIBDIBDI@@" "BDIBDIBDIB@@" "DIBDIBDIBD@@" "IBDIBDIBDI@@" "BDIBDIBDIB@@" "DIBDIBDIBD@@" "IBDIBDIBDI@@" "BDIBDIBDIB@@" "DIBDIBDIBD@@" "IBDIBDIBDI@@" "BDIBDIBDIB@@" "DIBDIBDIBD@@" "IBDIBDIBDI@@" "BDIBDIBDIB@@" "DIBDIBDIBD@@" "IBDIBDIBDI@@" "BDIBDIBDIB@@" "DIBDIBDIBD@@" "IBDIBDIBDI@@" "BDIBDIBDIB@@" "DIBDIBDIBD@@" "IBDIBDIBDI@@" "BDIBDIBDIB@@" "DIBDIBDIBD@@" "IBDIBDIBDI@@" "BDIBDIBDIB@@" "DIBDIBDIBD@@" "IBDIBDIBDI@@" "BDIBDIBDIB@@" "DIBDIBDIBD@@" "IBDIBDIBDI@@" "BDIBDIBDIB@@" "DIBDIBDIBD@@" "IBDIBDIBDI@@" "BDIBDIBDIB@@" "DIBDIBDIBD@@" "IBDIBDIBDI@@" "BDIBDIBDIB@@" "DIBDIBDIBD@@" "IBDIBDIBDI@@") (RPAQ WQUEEN (READBITMAP)) (40 40 "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@CH@@@@@@" "@@@@BH@@@@@@" "@@@@BH@@@@@@" "@@ALFLG@@@@@" "@@BDDDDH@@@@" "@@DCLGHD@@@@" "@@D@@@@D@@@@" "@@B@@@@H@@@@" "@@AGOOI@@@@@" "@@A@@@A@@@@@" "@@A@@@A@@@@@" "@@A@@@A@@@@@" "@@AOOOO@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@") (RPAQ WSQUARE (READBITMAP)) (40 40 "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@" "@@@@@@@@@@@@") (ADDTOVAR GLOBALVARS BSQUARE WSQUARE BQUEEN WQUEEN NQUEENSGRID NQUEENSBOARD) (PUTPROPS NQUEENS COPYRIGHT ("Eric Schoen" 1982 1985)) (DECLARE: DONTCOPY (FILEMAP (NIL (593 5501 (CONFLICTP 603 . 1019) (NQUEENS 1021 . 1447) (NQUEENSINIT 1449 . 3038) ( PLACEQUEEN 3040 . 3654) (REMOVELASTDISPLAYEDQUEEN 3656 . 4137) (REMOVELASTQUEEN 4139 . 4790) ( WAITFORMOVE 4792 . 4991) (\NQUEENS 4993 . 5499))))) STOP