SICP 問題 2.3
;; 長方形を高さと幅で定義 (define (make-rectangle height width) (cons height width)) (define (perimeter-rect rect) (+ (* 2 (height-rect rect)) (* 2 (width-rect rect)))) (define (area-rect rect) (* (height-rect rect) (width-rect rect))) (define (height-rect rect) (car rect)) (define (width-rect rect) (cdr rect))
gosh> (define r1 (make-rectangle 10 5)) r1 gosh> (perimeter-rect r1) 30 gosh> (area-rect r1) 50
;; 長方形を対角の二点によって定義 (define (make-rect p1 p2) (cons p1 p2)) (define (point-1 rect) (car rect)) (define (point-2 rect) (cdr rect)) (define (height-rect rect) (abs (- (y-point (point-1 rect)) (y-point (point-2 rect))))) (define (width-rect rect) (abs (- (x-point (point-1 rect)) (x-point (point-2 rect)))))
gosh> (define r2 (make-rect (make-point 0 0) (make-point 10 5))) r2 gosh> (perimeter-rect r2) 30 gosh> (area-rect r2) 50