Hi, I am a new learner of SICP. I got some problems while doing the exercise about eight queens. (Exercise 2.42)
Here is my code: (define (queens board-size) (define (safe? k position) (define (iter last-element front-lst col-num k) (define (ok? l-e car-lst) (and (not (= l-e car-lst)) (not (= (abs (- l-e car-lst)) (abs (- k col-num)))))) (if (null? front-lst) true (and (ok? last-element (car front-lst)) (iter last-element (cdr front-lst) (++ col-num) k)))) (let ((l-e (car (my-reverse position))) (f-l (my-remove (car (my-reverse position)) position))) (iter l-e f-l 1 k))) (define empty-board (list nil)) (define (adjoin-position new-row k rest-of-queens) (append rest-of-queens (list new-row))) (define (queen-cols k) (if (= k 0) (list empty-board) (filter (lambda (positions) (safe? k positions)) (my-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)))))) (queen-cols board-size)) in the code: my-reverse -- reverse my-flatmap -- flatmap help me find where is wrong, thanks!
_______________________________________________ MIT-Scheme-users mailing list MIT-Scheme-users@gnu.org https://lists.gnu.org/mailman/listinfo/mit-scheme-users