Just another update
This commit is contained in:
parent
a25938f123
commit
00a190b0a6
6591 changed files with 94363 additions and 23227 deletions
|
|
@ -1,22 +1,19 @@
|
|||
(defun n-queens (n m)
|
||||
(if (= n 1)
|
||||
(loop for x from 1 to m collect (list x))
|
||||
(loop for sol in (n-queens (1- n) m) nconc
|
||||
(loop for col from 1 to m when
|
||||
(loop for row from 0 to (length sol) for c in sol
|
||||
always (and (/= col c)
|
||||
(/= (abs (- c col)) (1+ row)))
|
||||
finally (return (cons col sol)))
|
||||
collect it))))
|
||||
(defun queens (n &optional (m n))
|
||||
(if (zerop n)
|
||||
(list nil)
|
||||
(loop for solution in (queens (1- n) m)
|
||||
nconc (loop for new-col from 1 to m
|
||||
when (loop for row from 1 to n
|
||||
for col in solution
|
||||
always (/= new-col col (+ col row) (- col row)))
|
||||
collect (cons new-col solution)))))
|
||||
|
||||
(defun show-solution (b n)
|
||||
(loop for i in b do
|
||||
(format t "~{~A~^~}~%"
|
||||
(loop for x from 1 to n collect (if (= x i) "Q " ". "))))
|
||||
(defun print-solution (solution)
|
||||
(loop for queen-col in solution
|
||||
do (loop for col from 1 to (length solution)
|
||||
do (write-char (if (= col queen-col) #\Q #\.)))
|
||||
(terpri))
|
||||
(terpri))
|
||||
|
||||
(let ((i 0) (n 8))
|
||||
(mapc #'(lambda (s)
|
||||
(format t "Solution ~a:~%" (incf i))
|
||||
(show-solution s n))
|
||||
(n-queens n n)))
|
||||
(defun print-queens (n)
|
||||
(mapc #'print-solution (queens n)))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue