Open Source WEB


『計算機プログラムの構造と解釈 第二版』解答集(未完)

Wizard Book: n.

Structure and Interpretation of Computer Programs (Hal Abelson, Jerry Sussman and Julie Sussman; MIT Press, 1984, 1996; ISBN 0-262-01153-0), an excellent computer science text used in introductory courses at MIT. So called because of the wizard on the jacket. One of the bibles of the LISP/Scheme world. Also, less commonly, known as the Purple Book. Now available on the http://mitpress.mit.edu/sicp/

The Jargon Fileより

名著 "Structure and Interpretation of Computer Programs 2nd. edition" (邦訳『計算機プログラムの構造と解釈 第二版』)の練習問題の解答集をつくりはじめました。

Scheme の処理系としては、Gaucheを使っています。

おことわり: 解答の正しさについては全く保証しませんし責任を負いません。コードを実行した場合の結果についても全く責任を負いません。

感想や御意見、間違いの指摘や改良の具体的提案など oss @ timedia . co . jp までいただけると幸いです。 よろしくお願いいたします。


更新


1.手続きによる抽象の構築-- ##(link2sicp "book-Z-H-9.html#%_chap_1" "Building Abstractions with Procedures")

  • 1.1.プログラムの要素-- ##(link2sicp "book-Z-H-10.html#%_sec_1.1" "The Elements of Programming")
    • 1.1.1.式-- ##(link2sicp "book-Z-H-10.html#%_sec_1.1.1" "Expressions")
    • 1.1.2.名前と環境-- ##(link2sicp "book-Z-H-10.html#%_sec_1.1.2" "Naming and the Environment")
    • 1.1.3.組合せの評価-- ##(link2sicp "book-Z-H-10.html#%_sec_1.1.3" "Evaluating Combinations")
    • 1.1.4.合成手続き-- ##(link2sicp "book-Z-H-10.html#%_sec_1.1.4" "Compound Procedures")
    • 1.1.5.手続き作用の置換えモデル-- ##(link2sicp "book-Z-H-10.html#%_sec_1.1.5" "The Substitution Model for Procedure Application")
    • 1.1.6.条件式と述語-- ##(link2sicp "book-Z-H-10.html#%_sec_1.1.6" "Conditional Expressions and Predicates")
    • 1.1.7.例:Newton法による平方根-- ##(link2sicp "book-Z-H-10.html#%_sec_1.1.7" "Example: Square Roots by Newton Method")
    • 1.1.8.ブラックボックス抽象としての手続き-- ##(link2sicp "book-Z-H-10.html#%_sec_1.1.8" "Procedures as Black-Box Abstractions")
  • 1.2.手続きとその生成するプロセス-- ##(link2sicp "book-Z-H-11.html#%_sec_1.2" "Procedures and the Processes They Generate")
    • 1.2.1.線型再帰と反復-- ##(link2sicp "book-Z-H-11.html#%_sec_1.2.1" "Linear Recursion and Iteration")
    • 1.2.2.木構造再帰-- ##(link2sicp "book-Z-H-11.html#%_sec_1.2.2" "Tree Recursion")
    • 1.2.3.増加の程度-- ##(link2sicp "book-Z-H-11.html#%_sec_1.2.3" "Orders of Growth")
    • 1.2.4.べき乗-- ##(link2sicp "book-Z-H-11.html#%_sec_1.2.4" "Exponentiation")
    • 1.2.5.最大公約数-- ##(link2sicp "book-Z-H-11.html#%_sec_1.2.5" "Greatest Common Divisors")
    • 1.2.6.例:素数性のテスト-- ##(link2sicp "book-Z-H-11.html#%_sec_1.2.6" "Example: Testing for Primality")
  • 1.3.高階手続きによる抽象-- ##(link2sicp "book-Z-H-12.html#%_sec_1.3" "Formulating Abstractions with Higher-Order Procedure")
    • 1.3.1.引数としての手続き-- ##(link2sicp "book-Z-H-12.html#%_sec_1.3.1" "Procedures as Arguments")
    • 1.3.2.lambdaを使う手続きの構築-- ##(link2sicp "book-Z-H-12.html#%_sec_1.3.2" "Constructing Procedures Using Lambda")
    • 1.3.3.一般的方法としての手続-- ##(link2sicp "book-Z-H-12.html#%_sec_1.3.3" "Procedures as General Methods")
    • 1.3.4.値として返される手続き-- ##(link2sicp "book-Z-H-12.html#%_sec_1.3.4" "Procedures as Returned Values")

2.データによる抽象の構築 -- ##(link2sicp "book-Z-H-13.html#%_chap_2" "Building Abstractions with Data")

  • 2.1.データ抽象入門 -- ##(link2sicp "book-Z-H-14.html#%_sec_2.1" "Introduction to Data Abstraction")
    • 2.1.1.例: 有理数の算術演算 -- ##(link2sicp "book-Z-H-14.html#%_sec_2.1.1" "Example: Arithmetic Operations for Rational Numbers")
    • 2.1.2.抽象の壁 -- ##(link2sicp "book-Z-H-14.html#%_sec_2.1.2" "Abstraction Barriers")
    • 2.1.3.データとは何か -- ##(link2sicp "book-Z-H-14.html#%_sec_2.1.3" "What Is Meant by Data")
    • 2.1.4.拡張問題: 区間算術演算 -- ##(link2sicp "book-Z-H-14.html#%_sec_2.1.4" "Extended Exercise: Interval Arithmetic")
  • 2.2.階層データ構造と閉包性 -- ##(link2sicp "book-Z-H-15.html#%_sec_2.2" "Hierarchical Data and the Closure Property")
    • 2.2.1.並びの表現 -- ##(link2sicp "book-Z-H-15.html#%_sec_2.2.1" "Representing Sequences")
    • 2.2.2.階層構造 -- ##(link2sicp "book-Z-H-15.html#%_sec_2.2.2" "Hierarchical Structures")
    • 2.2.3.公認インターフェースとしての並び -- ##(link2sicp "book-Z-H-15.html#%_sec_2.2.3" "Sequences as Conventional Interfaces")
    • 2.2.4.例: 図形言語 -- ##(link2sicp "book-Z-H-15.html#%_sec_2.2.4" "Example: A Picture Language")
  • 2.3.記号データ -- ##(link2sicp "book-Z-H-16.html#%_sec_2.3" "Symbolic Data")
    • 2.3.1.クウォート -- ##(link2sicp "book-Z-H-16.html#%_sec_2.3.1" "Quatation")
    • 2.3.2.例: 記号微分 -- ##(link2sicp "book-Z-H-16.html#%_sec_2.3.2" "Example: Symbolic Differentiation")
    • 2.3.3.例: 集合の表現 -- ##(link2sicp "book-Z-H-16.html#%_sec_2.3.3" "Example: Representing Sets")
    • 2.3.4.例: Huffman符号化木 -- ##(link2sicp "book-Z-H-16.html#%_sec_2.3.4" "Example: Huffman Encoding Trees")
  • 2.4.抽象データの多重表現 -- ##(link2sicp "book-Z-H-17.html#%_sec_2.4" "Multiple Representations for Abstract Data")
    • 2.4.1.複素数の表現 -- ##(link2sicp "book-Z-H-17.html#%_sec_2.4.1" "Representations for Complex Numbers")
    • 2.4.2.タグ付きデータ -- ##(link2sicp "book-Z-H-17.html#%_sec_2.4.2" "Tagged data")
    • 2.4.3.データ主導プログラミングと加法性 -- ##(link2sicp "book-Z-H-17.html#%_sec_2.4.3" "Data-Directed Programming and Additivity")
  • 2.5.汎用演算のシステム -- ##(link2sicp "book-Z-H-18.html#%_sec_2.5" "Systems with Generic Operations")
    • 2.5.1.汎用算術演算 -- ##(link2sicp "book-Z-H-18.html#%_sec_2.5.1" "Generic Arithmetic Operations")
    • 2.5.2.異る型のデータの統合 -- ##(link2sicp "book-Z-H-18.html#%_sec_2.5.2" "Combining Data of Different Types")
    • 2.5.3.例: 記号代数 -- ##(link2sicp "book-Z-H-18.html#%_sec_2.5.3" "Example: Symbolic Algebra")

3.標準部品化力,オブジェクトおよび状態 -- ##(link2sicp "book-Z-H-19.html#%_chap_3" "Modularity, Objects, and State")

  • 3.1.代入と局所状態 -- ##(link2sicp "book-Z-H-20.html#%_sec_3.1" "Assignment and Local State")
    • 3.1.1.局所状態変数 -- ##(link2sicp "book-Z-H-20.html#%_sec_3.1.1" "Local State Valiable")
    • 3.1.2.代入を取り入れた利点 -- ##(link2sicp "book-Z-H-20.html#%_sec_3.1.2" "The Benefits of Introducing Assignment")
    • 3.1.3.代入を取り入れた代価 -- ##(link2sicp "book-Z-H-20.html#%_sec_3.1.3" "The Costs of Introducing Assignment")
  • 3.2.評価の環境モデル -- ##(link2sicp "book-Z-H-21.html#%_sec_3.2" "The Environment Model of Evaluation")
    • 3.2.1.評価の規則 -- ##(link2sicp "book-Z-H-21.html#%_sec_3.2.1" "The Rules for Evaluation")
    • 3.2.2.単純な手続きの作用 -- ##(link2sicp "book-Z-H-21.html#%_sec_3.2.2" "Applying Simple Procedures")
    • 3.2.3.局所変数の入れ物としてのフレーム -- ##(link2sicp "book-Z-H-21.html#%_sec_3.2.3" "Frames as the Repository of Local State")
    • 3.2.4.内部定義 -- ##(link2sicp "book-Z-H-21.html#%_sec_3.2.4" "Internal Definitions")
  • 3.3.可変データでのモデル化 -- ##(link2sicp "book-Z-H-22.html#%_sec_3.3" "Modeling with Mutable Data")
    • 3.3.1.可変リスト構造 -- ##(link2sicp "book-Z-H-22.html#%_sec_3.3.1" "Mutable List Structure")
    • 3.3.2.キューの表現 -- ##(link2sicp "book-Z-H-22.html#%_sec_3.3.2" "Representing Queues")
    • 3.3.3.表の表現 -- ##(link2sicp "book-Z-H-22.html#%_sec_3.3.3" "Representing Tables")
    • 3.3.4.ディジタル回路のシミュレータ -- ##(link2sicp "book-Z-H-22.html#%_sec_3.3.4" "A Simulator for Digital Circuits")
      • 問題 3.28|問題 3.29|問題 3.30|問題 3.31|問題 3.32
    • 3.3.5.制約の拡散 -- ##(link2sicp "book-Z-H-22.html#%_sec_3.3.5" "Propagation of Constraints")
      • 問題 3.33|問題 3.34|問題 3.35|問題 3.36|問題 3.37
  • 3.4.並列性: 時が本質的 -- ##(link2sicp "book-Z-H-23.html#%_sec_3.4" "Concurrency: Time Is of the Essence")
    • 3.4.1.並列システムでの時 -- ##(link2sicp "book-Z-H-23.html#%_sec_3.4.1" "The Nature of Time in Concurrent Systems")
      • 問題 3.38
    • 3.4.2.並列性の制御機構 -- ##(link2sicp "book-Z-H-23.html#%_sec_3.4.2" "Mechanisms for Controlling Concurrency")
      • 問題 3.39|問題 3.40|問題 3.41|問題 3.42|問題 3.43|問題 3.44|問題 3.45|問題 3.46|問題 3.47|問題 3.48|問題 3.49
  • 3.5.ストリーム -- ##(link2sicp "book-Z-H-24.html#%_sec_3.5" "Streams")
    • 3.5.1.ストリームは遅延リスト -- ##(link2sicp "book-Z-H-24.html#%_sec_3.5.1" "Streams Are Delayed Lists")
      • 問題 3.50|問題 3.51|問題 3.52
    • 3.5.2.無限ストリーム -- ##(link2sicp "book-Z-H-24.html#%_sec_3.5.2" "Infinite Streams")
      • 問題 3.53|問題 3.54|問題 3.55|問題 3.56|問題 3.57|問題 3.58|問題 3.59|問題 3.60|問題 3.61|問題 3.62
    • 3.5.3.ストリームパラダイムの開発 -- ##(link2sicp "book-Z-H-24.html#%_sec_3.5.3" "Exploiting the Stream Paradigm")
      • 問題 3.63|問題 3.64|問題 3.65|問題 3.66|問題 3.67|問題 3.68|問題 3.69|問題 3.70|問題 3.71|問題 3.72|問題 3.73|問題 3.74|問題 3.75|問題 3.76
    • 3.5.4.ストリームと遅延評価 -- ##(link2sicp "book-Z-H-24.html#%_sec_3.5.4" "Stream and Delayed Evaluation")
      • 問題 3.77|問題 3.78|問題 3.79|問題 3.80
    • 3.5.5.関数的プログラムの部品化度とオブジェクトの部品化度 -- ##(link2sicp "book-Z-H-24.html#%_sec_3.5.5" "Modularity of Functional Programs and Modularity of Objects")
      • 問題 3.81|問題 3.82

4.超言語的抽象 -- ##(link2sicp "book-Z-H-25.html#%_chap_4" "Metalinguistic Abstraction")

5.レジスタ計算機での計算 -- ##(link2sicp "book-Z-H-30.html#%_chap_5" "Computing with Register Machines")

このサイトは、 IPA の「平成15年度オープンソフトウエア活用基盤整備事業」 の委託事業として開発されたKahuaで試験的に運用しております。

Copyright (c) 2004-2007 株式会社タイムインターメディア About Us