2015-10-01から1ヶ月間の記事一覧
(make-segment (make-vect 0.582 0.657) (make-vect 0.640 0.857)) (make-segment (make-vect 0.640 0.857) (make-vect 0.575 1.000)) (make-segment (make-vect 0.419 1.000) (make-vect 0.354 0.857)) (make-segment (make-vect 0.354 0.857) (make-vect 0…
(define (below painter1 painter2) (let* ((split-point (make-vect 0.0 0.5)) (paint-bottom (transform-painter painter1 (make-vect 0.0 0.0) (make-vect 1.0 0.0) split-point)) (paint-upper (transform-painter painter2 split-point (make-vect 1.0 …
(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))) (define (rotate180 painter) (transform-painter painter (make-vect 1.0 1.0) (make-vect 0.0 1.0) (make-vect 1.0 0.0))) (def…
;; a (define (outline-painter frame) (let* ((v00 (make-vect 0 0)) (v01 (make-vect 0 1)) (v10 (make-vect 1 0)) (v11 (make-vect 1 1))) ((segments->painter (list (make-segment v00 v01) (make-segment v00 v10) (make-segment v10 v01) (make-segme…
線分をvectorで定義して構成子と選択子を定義するって問題やっていた. 問題文には 平面上の有向線分はベクタの対ーー原点から線分の始点へ向かうベクタと,始点から線分の終点へ向かうベクターーで表現される. [中略] この線分の表現をmake-segmentと選択…
(define (make-segment v1 v2) (make-vect v1 v2)) (define (start-segment seg) (car seg)) (define (end-segment seg) (cdr seg))
;; listでmake (define (make-frame origin edge1 edge2) (list origin edge1 edge2)) (define (origin-frame frame) (car frame)) (define (edge1-frame frame) (cadr frame)) (define (edge2-frame frame) (caddr frame)) ;; consでmake (define (make-fra…
(define (make-vect x y) (cons x y)) (define (xcor-vect v) (car v)) (define (ycor-vect v) (cdr v)) (define (add-vect v1 v2) (make-vect (+ (xcor-vect v1) (xcor-vect v2)) (+ (ycor-vect v1) (ycor-vect v2)))) (define (sub-vect v1 v2) (make-vect…
(define (split first second) (lambda (painter n) (if (= n 0) painter (let ((smaller ((split first second) painter (- n 1)))) (first painter ((second smaller smaller)))))))
(define (up-split painter n) (if (= n 0) painter (let ((smaller (up-split painter (- n 1)))) (below painter (beside smaller smaller)))))
(define (queens board-size) (define (queen-cols k) (if (= k 0) (list empty-board) (filter (lambda (positions) (safe? k positions)) (flatmap (lambda (rest-of-queens) (map (lambda (new-row) (adjoin-position new-row k rest-of-queens)) (enumer…
(define (queens board-size) (define (queen-cols k) (if (= k 0) (list empty-board) (filter (lambda (positions) (safe? k positions)) (flatmap (lambda (rest-of-queens) (map (lambda (new-row) (adjoin-position new-row k rest-of-queens)) (enumer…
(define (equal-sum-of-unique-trio n s) (filter (lambda (l) (= s (+ (car l) (cadr l) (caddr l)))) (flatmap (lambda (i) (flatmap (lambda (j) (map (lambda (k) (list i j k)) (enumerate-interval 1 (- j 1)))) (enumerate-interval 1 (- i 1)))) (en…
(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 prime-sum? (unique-pairs n))))
(define (fold-left op initial sequence) (define (iter result rest) (if (null? rest) result (iter (op result (car rest)) (cdr rest)))) (iter initial sequence)) (define (fold-right op initial sequence) (if (null? sequence) initial (op (car s…
(define (fold-left op initial sequence) (define (iter result rest) (if (null? rest) result (iter (op result (car rest)) (cdr rest)))) (iter initial sequence)) (define (fold-right op initial sequence) (if (null? sequence) initial (op (car s…
(define (dot-product v w) (accumulate + 0 (map * v w))) (define (matrix-*-vector m v) (map (lambda (x) (dot-product x v)) m)) (define (transpose mat) (accumulate-n cons nil mat)) (define (matrix-*-matrix m n) (let ((cols (transpose n))) (m…
SICPの問題 2.37をやろうとしたところ,この本で定義した一つのリストのみに対応したmapではなく 複数のリストに対応したmapが必要だったので自分で書いてみました. (define (foldr op init lst) (if (null? lst) init (op (car lst) (foldr op init (cdr l…
;; accumulate (define (accumulate op initial sequence) (if (null? sequence) initial (op (car sequence) (accumulate op initial (cdr sequence))))) ;; accumulate-n (define (accumulate-n op init seqs) (if (null? (car seqs)) nil (cons (accumula…
;;accumulate (define (accumulate op initial sequence) (if (null? sequence) initial (op (car sequence) (accumulate op initial (cdr sequence))))) ;;enumerate-tree (define (enumerate-tree tree) (cond ((null? tree) nil) ((not (pair? tree)) (li…
(define (accumulate op initial sequence) (if (null? sequence) initial (op (car sequence) (accumulate op initial (cdr sequence))))) (define (horner-eval x coefficient-sequence) (define (iter lis res) (cond ((null? lis) res) (else (iter (cdr…
accumulateを使ってmap,append,lengthを実装する. (define (accumulate op initial sequence) (if (null? sequence) initial (op (car sequence) (accumulate op initial (cdr sequence))))) (define (map p sequence) (accumulate (lambda (x y) (cons (p …
(define (subsets s) (if (null? s) (list nil) (let ((rest (subsets (cdr s)))) (append rest (map (lambda (x) (cons (car s) x)) rest))))) ;;この式はまず最後まで再帰し,そこでrestに空リストを持って返ってくる. ;;mapでcarとrestをconsして新しい…
(define (tree-map fn tree) (map (lambda (sub-tree) (if (pair? sub-tree) (tree-map fn sub-tree) (fn sub-tree))) tree)) (define (sqaure x) (* x x)) (define (square-tree tree) (tree-map square tree))
(define (square-tree tree) (cond ((null? tree) nil) ((not (pair? tree)) (* tree tree)) (else (cons (square-tree (car tree)) (square-tree (cdr tree)))))) (define (square-tree tree) (map (lambda (sub-tree) (if (pair? sub-tree) (square-tree s…
(define (make-mobile left right) (list left right)) (define (make-branch length structure) (list length structure)) ;; a (define (left-branch mobile) (car mobile)) (define (right-branch mobile) (car (cdr mobile))) (define (branch-length br…
(define x (list (list 1 2) (list 3 4))) (define (fringe l) (cond ((null? l) nil) ((pair? (car l)) (append (fringe (car l)) (fringe (cdr l)))) (else (cons (car l) (fringe (cdr l)))))) gosh> (fringe x) (1 2 3 4) gosh> (fringe (list x x)) (1 …
(define x (list (list 1 2) (list 3 4))) (define (reverse items) (if (null? items) items (append (reverse (cdr items)) (list (car items))))) (define (deep-reverse items) (cond ((null? items) nil) ((pair? items) (append (deep-reverse (cdr it…
(define x (list 1 2 3)) (define y (list 4 5 6)) (append x y) (1 2 3 4 5 6) (cons x y) ((1 2 3) 4 5 6) (list x y) ((1 2 3) (4 5 6))
(1 3 (5 7) 9) (car (cdr (car (cdr (cdr))))) ((7)) (car (car )) (1 (2 (3 (4 (5 (6 7)))))) (car (cdr (car (cdr (car (cdr (car (cdr (car (cdr (car (cdr )))))))))))) gosh> (car (cdr (car (cdr (cdr '(1 3 (5 7) 9)))))) 7 gosh> (car (car '((7))))…