Name: Anonymous 2007-04-02 6:54 ID:d9euNV6I
so why has the guy on the cover put on his robe and wizard hat?
(define (queens board-size)
(define empty-board ())
(define (row pos) (car pos))
(define (col pos) (cdr pos))
(define (adjoin-position row col rest)
(cons (cons row col) rest))
(define (safe-row? new rest)
(null? (filter (lambda (pos)
(= (row pos)
(row new)))
rest)))
(define (safe-diag? new rest)
(null? (filter (lambda (pos)
(= (abs (- (row pos)
(row new)))
(abs (- (col pos)
(col new)))))
rest)))
(define (safe? col positions)
(let ((new (car positions))
(rest (cdr positions)))
(and (safe-row? new rest)
(safe-diag? new rest))))
(define (queen-cols k)
(if (= k 0)
(list empty-board)
(filter
(lambda (positions) (safe? k positions))
(flatmap
(lambda (rest-of-queens)
(map (lambda (new-row)
(adjoin-position new-row k rest-of-queens))
(enumerate-interval 1 board-size)))
(queen-cols (- k 1))))))
(queen-cols board-size))