게시판 인덱스

 
 FAQFAQ   검색검색   멤버리스트멤버리스트   사용자 그룹사용자 그룹   사용자 등록하기사용자 등록하기 
 개인 정보개인 정보   비공개 메시지를 확인하려면 로그인하십시오비공개 메시지를 확인하려면 로그인하십시오   로그인로그인 

6번째 실습에서 사용할 함수들

 
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.210 Principles of Programming (Fall 2008)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
최원태



가입: 2006년 9월 16일
올린 글: 369

올리기올려짐: 2008년10월9일 1:29    주제: 6번째 실습에서 사용할 함수들 인용과 함께 답변

10/8일 6번째 실습의 두 번째 문제에서 사용할 함수정의 모음입니다.
Dr.scheme에 붙여넣고 <??>부분을 채워주시면 됩니다.


코드:
;;Given functions
;list of interval value generator
(define (enumerate-interval base end)
  (if (> base end) () (cons base (enumerate-interval (+ 1 base) end))))

;accumulate function
(define (accumulate op init seq)
  (if (null? seq)
      init
      (op (car seq)
          (accumulate op init (cdr seq)))))

;empty-position-set
(define empty-b null)

;add new position to position set
(define (adjoin-p column row set)
  (cons (cons column row) set))

;safety checker
(define (safe? p)
  (define (myAnd x y) (and x y))
  (define (safe?-aux x y)
    (not (or (equal? (+ (car x) (cdr x)) (+ (car y) (cdr y)))
             (equal? (- (car x) (cdr x)) (- (car y) (cdr y)))
             (equal? (cdr x) (cdr y)))))
  (accumulate myAnd #t (map (lambda (x) (safe?-aux x (car p))) (cdr p))))

;top-function : qprint : run quuens procedure with pretty printing
(define (qprint size)
  (define (qprint-aux sol)
    (define (print-cell x y sol)
      (if (= 0 (length (filter (lambda (p) (and (= (car p) x) (= (cdr p) y))) sol))) (print '-) (print 'Q)))
    (define (iteration x y)
      (cond ((= y size) ())
            ((= x size) (begin (newline) (iteration 0 (+ y 1))))
            (else (print-cell x y sol) (iteration (+ x 1) y))))
    (iteration 0 0) (newline))
  (for-each qprint-aux (queens size)))


;queens
(define (queens bs)
  (define (queen-cols k)
    (if (< k 0)
        (list empty-b)
        (filter
         (lambda (p) (safe? p))
         (accumulate append
                     null
                     (map <??>
                          (queen-cols (- k 1)))))))
  (queen-cols (- bs 1)))

;;testcode
;(qprint 4)
;(qprint 5)
위로
사용자 정보 보기 비밀 메시지 보내기 이메일 보내기 글 올린이의 웹사이트 방문
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.210 Principles of Programming (Fall 2008) 시간대: GMT + 9 시간(한국)
페이지 11

 
건너뛰기:  
새로운 주제를 올릴 수 없습니다
답글을 올릴 수 없습니다
주제를 수정할 수 없습니다
올린 글을 삭제할 수 없습니다
투표를 할 수 없습니다


Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group
Translated by kss & drssay