mit-scheme-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[MIT-Scheme-users] Hi everybody, I can't find the bugs in my program..he


From: Ray Yang
Subject: [MIT-Scheme-users] Hi everybody, I can't find the bugs in my program..help!
Date: Fri, 7 Sep 2012 22:43:22 +0800

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!

reply via email to

[Prev in Thread] Current Thread [Next in Thread]