rendered paste body(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)))))