2008-04-17から1日間の記事一覧

Ex 2.49

; a. (define outliner (segments->painter (list (make-segment (make-vect 0 0) (make-vect 1 0)) (make-segment (make-vect 1 0) (make-vect 0 1)) (make-segment (make-vect 0 0) (make-vect 0 1)) (make-segment (make-vect 0 1) (make-vect 1 0))))) ;…

Ex 2.48

(define (make-segment o v) (list o v)) (define (start-segment s) (car s)) (define (end-segment s) (add-vect (car s) (cadr s)))

Ex 2.47

リストによる実装に対するセレクター: (define (origin-frame f) (car f)) (define (edge1-frame f) (cadr f)) (define (edge2-frame f) (caddr f)) cons による実装に対するセレクター: (define (origin-frame f) (car f)) (define (edge1-frame f) (cadr f…

Ex 2.46

(define (make-vect x y) (list x y)) (define (xcor-vect v) (car v)) (define (ycor-vect v) (cadr v)) (define (add-vect a b) (make-vect (+ (xcor-vect a) (xcor-vect b)) (+ (ycor-vect a) (ycor-vect b)))) (define (sub-vect a b) (make-vect (- (xc…

Ex 2.45

(define (split f g) (lambda (p n) (if (= n 0) p (let ((smaller ((split f g) p (- n 1)))) (f p (g smaller smaller)))))) (二引数の手続きを返せる、ということに気づくまでに時間がかかった。)

Ex 2.44

(define (up-split painter n) (if (= n 0) painter (let ((smaller (up-split painter (- n 1)))) (below painter (beside smaller smaller)))))

Ex 2.43

再帰的に呼び出す (queen-cols (- k 1)) が (enumerate-interval 1 board-size) のループの内側にあるため、 board-size の階乗のオーダーで増えていくことが問題。 最終的に呼び出される (queen-cols 0) の回数で処理時間が決定されると考えると (board-siz…

Ex 2.42

(define empty-board nil) (define (adjoin-position new-row k rest-of-queens) (cons new-row rest-of-queens)) (define (safe? k ps) (define (next triple) (list (- (car triple) 1) (cadr triple) (+ (caddr triple) 1))) (define (check triple ps) (…