開発環境
- OS X Mavericks - Apple(OS)
- Emacs (CUI)、BBEdit - Bare Bones Software, Inc. (GUI) (Text Editor)
- Racket (プログラミング言語)
- DrRacket (開発環境)
計算機プログラムの構造と解釈(Gerald Jay Sussman(原著)、Julie Sussman(原著)、Harold Abelson(原著)、和田 英一(翻訳)、ピアソンエデュケーション、原書: Structure and Interpretation of Computer Programs (MIT Electrical Engineering and Computer Science)(SICP))の2(データによる抽象の構築)、2.2(階層データ構造と閉包性)、2.2.4(例: 図形言語)、ペインタ、問題 2.49.を解いてみる。
その他参考書籍
- Instructor's Manual to Accompany Structure & Interpretation of Computer Programs
- プログラミングGauche (Kahuaプロジェクト (著), 川合 史朗 (監修), オライリージャパン)
問題 2.49.
コード(BBEdit, Emacs)
sample.rkt
;; The first three lines of this file were inserted by DrRacket. They record metadata
;; about the language level of this file in a form that our tools can easily process.
#reader(lib "htdp-advanced-reader.ss" "lang")((modname sample) (read-case-sensitive #t) (teachpacks ()) (htdp-settings #(#t constructor repeating-decimal #t #t none #f ())))
(require (planet soegaard/sicp:2:1/sicp))
;; a
;; 見やすいように、フレームより0.1だけ内側に設定
(define painter-outline
(segments->painter
(list (make-segment (make-vect 0.1 0.1)
(make-vect 0.1 0.9))
(make-segment (make-vect 0.1 0.9)
(make-vect 0.9 0.9))
(make-segment (make-vect 0.9 0.9)
(make-vect 0.9 0.1))
(make-segment (make-vect 0.9 0.1)
(make-vect 0.1 0.1)))))
(paint painter-outline)
;; b
(define painter-x
(segments->painter
(list (make-segment (make-vect 0.1 0.1)
(make-vect 0.9 0.9))
(make-segment (make-vect 0.1 0.9)
(make-vect 0.9 0.1)))))
(paint painter-x)
;; c
(define painter-diamond
(segments->painter
(list (make-segment (make-vect 0.1 0.5)
(make-vect 0.5 0.9))
(make-segment (make-vect 0.5 0.9)
(make-vect 0.9 0.5))
(make-segment (make-vect 0.9 0.5)
(make-vect 0.5 0.1))
(make-segment (make-vect 0.5 0.1)
(make-vect 0.1 0.5)))))
(paint painter-diamond)
入出力結果(生成された画像)

0 コメント:
コメントを投稿