SICP 第3章 Exercise 難易度リスト ( 3.1 ~ 3.82 )

最終更新: 7/23 ( ~ 3.82 )

せっかくだからざっくりでも難易度書いていった方が 後から勉強する人が勉強しやすそうなので 今後問題解くと同時に難易度も書き残していくことにする。

< ご注意 >
・難易度に関しては完全に個人の主観となります。
参考までに僕個人のスペックを記載しておくと、高校2年の数2Bまで終わってるくらいのレベル感です。アカデミックな数学はパッパラパーです。

・また、各Exerciseの難易度に関しては そのExerciseの所まで勉強した時点でのスキルセット・理解度を想定した難易度を書くようにしています( つまり、既に後の章も勉強して記述に慣れた状態での難易度ではないので、前の章の★3つと後の章の★3つのレベル感が大きく異なります )。

第1章 難易度リスト
第2章 難易度リスト
第3章 難易度リスト
第4章 難易度リスト
第5章 難易度リスト

3.1 標準部品化力, オブジェクトおよび状態

3.1.1 局所状態変数
 3.1 ★ (さすがに一問目は簡単)
 3.2 ★★ (局所空間周りでハマるとちょい面倒かも)
 3.3 ★ (特に悩む所は無いかも)
 3.4 ★★ (ハマらなければ)
3.1.2 代入を取り入れた利点
 3.5 ★★★★ (条件が多いので結構ハマった)
 3.6 ★★ (学んだ通りに解くだけ)
3.1.3 代入を取り入れた代価
 3.7 ★★★ (修正しない方が案外シンプルで加法的で要件を満たしていたり)
 3.8 ★★ (関数自体は単純)

3.2 評価の環境モデル

3.2.1 評価の規則
 3.9 ★ (図示問題。特に悩む所は無い)
 3.10 ★★ (評価される場所の違いに注目)
3.2.4 内部定義
 3.11 ★★ (おさらい問題)

3.3 可変データでのモデル化

3.3.1 可変リスト構造
 3.12 ★ (リスト構造を理解していれば問題無い)
 3.13 ★ ( (a b (a b c))ではない。「フレーム」に着目)
 3.14 ★ (そこまで予測難しくない)
 3.15 ★ (ここら辺の動き、ガベコレっぽい)
 3.16 ★★★ (これまでの応用。図を描くとわかりやすい)
 3.17 ★★ (リストとset!を活用する)
 3.18 ★★ (方針は3.17のものを参考にできる)
 3.19 ★★★★★★★ (フロイドになれと…)
 3.20 ★★★★ (ちょっとエグめ)
3.3.2 キューの表現
 3.21 ★ (特にひねりのない問題)
 3.22 ★★★ (丁寧に定義してあげる)
 3.23 ★★★ (いつぞや勉強したC言語の連結リスト構造を思い出す…)
3.3.3 表の表現
 3.24 ★ (少しの修正で済む)
 3.25 ★★★★ (こんがらがる場合図示した方が良いかも)
 3.26 ★★★★★ (以前出た二分木の辞書も理解している必要がある)
 3.27 ★★ (おさらい。超簡単なキャッシュみたいな感じ)
3.3.4 ディジタル回路のシミュレータ
 3.28 ★ (迷う所が特に無い)
 3.29 ★★ (or演算の性質に注目する)
 3.30 ★★★ (全加算器が出た時点で来ると思った問題。再帰でやっつける)
 3.31 ★★★ (地味にハマッた。and-gate, or-gate, inverterに注目)
 3.32 ★ (容易に想像できる)
3.3.5 制約の拡散
 3.33 ★ (これまでにつくった制約を使用)
 3.34 ★ (ちょっと考えれば簡単)
 3.35 ★ (これまで通り)
 3.36 ★★ (環境モデル苦手や…(´・ω・`))
 3.37 ★★ (c-とc/に一工夫入れてあげる)

3.4 並列性: 時が本質的

3.4.1 並列システムでの時
 3.38 ★ (導入部分のためすんなり解ける)
3.4.2 並列性の制御機構
 3.39 ★ (紙とペンを使って考えるとわかりやすい)
 3.40 ★ (l1は10 10, 10 1000, 1000 1000 といった具合で場合分けすると楽)
 3.41 ★ (余裕)
 3.42 ★ (余裕)
 3.43 ★ (特に困る点は無い)
 3.44 ★ (特に困る点は無い)
 3.45 ★★ (並列システムの設計で注意すべきこと)
 3.46 ★ (何が起こるかは想像に容易い)
 3.47 ★★★★★ (mutex=局所的な直列化機構と考えるとわかりやすい)
 3.48 ★★★ (問題文の通りに)
 3.49 ★★ (ヒントを活用)

3.5 ストリーム

3.5.1 ストリームは遅延リスト
 3.50 ★★ (特に問題無し)
 3.51 ★ (環境によってはうまく印字されないため要Google)
 3.52 ★★ (地味に重要っぽい感じなのでおさえておきたい)
3.5.2 無限ストリーム
 3.53 ★ (想像に容易い)
 3.54 ★★ (理解度チェック用の問題)
 3.55 ★★ (factorialsと構造が似ている)
 3.56 ★★ (問題自体は秒殺. mergeが鮮やかなので見ておきたい)
 3.57 ★ (想像に容易い)
 3.58 ★★ (処理の流れを追えば見えてくる)
 3.59
  (a) ★★ (反復を使用)
  (b) ★★ (問題自体は簡単。内部動作をよく見ておきたい)
 3.60 ★★★★ (再帰の構築に結構手間取った)
 3.61 ★★★★ (「べき級数」の概念に慣れてないと何をしているのかわからなくなってくる)
 3.62 ★★★★ (同上。べき級数を理解していれば比較的解きやすいと思われる)
3.5.3 ストリームパラダイムの開発
 3.63 ★ (想像に容易い)
 3.64 ★★ (容易。ひねりはない)
 3.65 ★★ (ln2のストリームをつくって検証するだけ)
 3.66 ★★★★ (S=Tの場合、S  3.67 ? (もう一つのストリーム混ぜる必要無くても実装できるが…?謎)
 3.68 ★ (想像に容易い)
 3.69 ★★★ (pairs使用。Pythagorasはfilterで秒殺。しかし重いな…)
 3.70 ★★★ (手順通りにやればそこまで難解ではない)
 3.71 ★★★ (こちらも問題文の記載通りに)
 3.72 ★★ (「立方数の和」ではなく「平方数の和」なので注意)
 3.73 ★★★ (add-stream, lambda式を使用。図がたよりになる)
 3.74 ★ (特にひねりは無い。初期値は 0 なので単にstream-cdrしないように)
 3.75 ★★ ("検出データ"の各値と直前の値との平均)
 3.76 ★★★ (複数引数を取るバージョンのstream-mapで解ける)
3.5.4 ストリームと遅延評価
 3.77 ★★ (let, delay, force を使用する)
 3.78 ★★★ (図の通りに。見た目程難しくない)
 3.79 ★★★ (stream-mapを使う)
 3.80 ★★★★ (式の通りコードに起こす)
3.5.5 関数的プログラムの部品化度とオブジェクトの部品化度
 3.81 ★★★★ (命令のストリームを引数として取る手続きをつくる)
 3.82 ★★★★ (cons-stream 大活躍)

Written by Nisei Kimura ( 木村 仁星 )

- Sponsored Links -

<<

Top

>>