- 
                Notifications
    You must be signed in to change notification settings 
- Fork 5
N Queens
        Jacques Nomssi edited this page Nov 10, 2020 
        ·
        2 revisions
      
        ;;; NQUEENS -- Compute number of solutions to 8-queens problem.
;; http://wiki.call-cc.org/chicken-compilation-process
    (define (nqueens n)
    (define (dec-to n)
        (let loop ((i n) (l '()))
        (if (= i 0) l (loop (- i 1) (cons i l)))))
    (define (try x y z)
        (if (null? x)
        (if (null? y)
            1
            0)
        (+ (if (ok? (car x) 1 z)
            (try (append (cdr x) y) '() (cons (car x) z))
            0)
            (try (cdr x) (cons (car x) y) z))))
    (define (ok? row dist placed)
        (if (null? placed)
        #t
        (and (not (= (car placed) (+ row dist)))
            (not (= (car placed) (- row dist)))
            (ok? row (+ dist 1) (cdr placed)))))
    (try (dec-to n) '() '()))
    (nqueens 8)