(define n 8) (define on_board (lambda (x) (if (and (> x 0) (< x (* n n))) #T #F ))) (define neigh (lambda (x L) (if (and (on_board x) (not (exista L x))) (begin (if (= (length L) (- (* n n) 1)) (display (reverse (cons x L))) (begin (if (or (>= (modulo x n) 2) (= (modulo x n) 0)) (begin (neigh (+ (- (* 2 n) 1)) (cons x L)) (neigh (- (+ (* 2 n) 1)) (cons x L)))) (if (and (<= (modulo x n) (- n 1)) (not (= (modulo x n) 0))) (begin (neigh (+ x (+ (* 2 n) 1)) (cons x L)) (neigh (- x (- (* 2 n) 1)) (cons x L)))) (if (or (>= (modulo x n) 3) (= (modulo x n) 0)) (begin (neigh (+ x (- n 2)) (cons x L)) (neigh (- x (+ n 2)) (cons x L)))) (if (and (<= (modulo x n) (- n 2)) (not (= (modulo x n) 0))) (begin (neigh (+ x (+ n 2)) (cons x L)) (neigh (- x (- n 2)) (cons x L)))) )))))) (define exista (lambda (L e) (if (null? L) #f (if (= (car L) e) #t (exista (cdr L) e)))))