問題2.50 – SICP(計算機プログラムの構造と解釈)その64
問題2.50 ペインタを水平に逆転する変換 flip-horiz (define (flip-horiz painter) (transform-painter painter (make-vect 1.0 0.0) (make-vect 0.0 0.0) (make-vect 1.0 1.0))) ((flip-horiz wave) canvas-frame) gosh> 260.0,3…続きを読む
問題2.50 ペインタを水平に逆転する変換 flip-horiz (define (flip-horiz painter) (transform-painter painter (make-vect 1.0 0.0) (make-vect 0.0 0.0) (make-vect 1.0 1.0))) ((flip-horiz wave) canvas-frame) gosh> 260.0,3…続きを読む
問題2.49 a. 指定されたフレームの外形を描くペインタ (define draw-frame-outline (let ((v0 (make-vect 0.0 0.0)) (v1 (make-vect 1.0 0.0)) (v2 (make-vect 1.0 1.0)) (v3 (make-vect 0.0 1.0))) (segments->painter (list (make-se…続きを読む
問題2.48 (define (make-segment origin-to-start start-to-end) (cons origin-to-start start-to-end)) (define (start-segment segment) (car segment)) (define (end-segment segment) (cdr segment)) 計算機プログラムの構造と…続きを読む
問題2.46 (define (make-vect x y) (cons x y)) (define (xcor-vect v) (car v)) (define (ycor-vect v) (cdr v)) (define (add-vect vect-a vect-b) (make-vect (+ (xcor-vect vect-a) (xcor-vect vect-b)) (+ (ycor-…続きを読む
問題2.44 これは right-split の below と beside を入れ替えるだけ。 (define (up-split painter n) (if (= n 0) painter (let ((smaller (up-split painter (- n 1)))) (below painter (beside smaller smaller))))) 問題2.45 right-…続きを読む
図形描画 スクリプト(with Canvas and JavaScript) ようやく SICP(計算機プログラムの構造と解釈) の図形言語に到達したが、図形を描く方法が無い… いろいろ調べてまわったところ flash で図形言語の描画ツールを作っている人([flash][scheme][SICP] Flashで図形言語の描画ツールを作りました(SICP2章の話) – プロ…続きを読む
問題2.43 位置の集合 ((1 1)) に新しい場所の座標 (1 2 3 4) を連結する場合を取り出して調べてみる。 通常の queens 手続き (print (flatmap (lambda (rest-of-queens) (print "DONE1") (map (lambda (new-row) (print "DONE2") (adjoin-…続きを読む
問題2.42 どうしてもわからなかったので、 SICP memo: 問題2.42 – 素人くさいSICP「独」書会 の解答を見て、Exercise 2.42 エイトクイーンパズル完全攻略 – Yet Another わっほい を参考にして手続きの働き方を調べてみた。 (define (queens board-size) (define (queen-cols k) (if…続きを読む
問題2.41 (define (unique-trio n) (flatmap (lambda (i) (flatmap (lambda (j) (map (lambda (k) (list i j k)) (enumerate-interval 1 (- j 1)))) (enumerate-interval 1 (- i 1)))) (enumerate-interval 1 n))) (de…続きを読む
問題2.40 (define (unique-pairs n) (flatmap (lambda (i) (map (lambda (j) (list i j)) (enumerate-interval 1 (- i 1)))) (enumerate-interval 1 n))) (define (prime-sum-pairs n) (map make-pair-sum (filter pri…続きを読む