読者です 読者をやめる 読者になる 読者になる

yy_taroのとりとめのない落書き

メインフレームの導入・設計・構築ができるぐらいの知識があったりする。

SICP始めました 76

SICP七十六日目 最近サボりぐせがついてしまったSICP。 これではいけないとは思いつつも、若干モチベーションが落ちてきている。 よしこんな時は写経だ。 ということでなんだか小難しそうな問題3.30は一旦飛ばします。 回路の表現にでてくる処理をひたすら書…

SICP始めました 75

SICP七十五日目 昨日はサボってしまったので今日は少し進めます。 問題3.28 オアゲートをアンドゲートとノットゲートで作るという話。 オアゲートがうまく作れず以外と苦戦しました。 (define (or-gate a b output) (let ((c (make-wire)) (d (make-wire)) (…

SICP始められませんでした 2

始められませんでした。 ちょっと色々ありまして、 どうしてもSICPをやる気分ではないので今日はお休み。 詳細は明日公開しようと思います。 計算機プログラムの構造と解釈[第2版]作者: ハロルドエイブルソン,ジュリーサスマン,ジェラルド・ジェイサスマン,H…

SICP始めました 74

SICP七十四日目 昨日から引き続きと「基本的な機能箱」を読んだ。 今のところ代入という概念を使ってディジタル回路シミュレーターを作ろうという話ですね。 問題3.28 特に迷うことなくand-gateを焼き直すだけ (define (or-gate a1 a2 output) (define (or-a…

SICP始めました 73

SICP七十三日目 問題3.26 パス 問題3.27 Fibonacci数をnに比例したステップ数で計算出来る理由は、すでに求められれている計算結果をメモから取り出すことで再計算が減っているため (memoize fib)では、fibが再帰的に動いてしまうのでメモできない。 3.3.4デ…

SICP始めました 72

SICP七十二日目 3.3.3 表の表現を読んだ。 そして写経。 さすがにここまでくると表の表現にその処理はそんなに苦戦しない。 dispatchを使った処理も慣れてきました。 問題3.24 ちょうど目の前に書かれてある「表オブジェクト」にsame-key?を引数に取り、asso…

SICP始めました 71

SICP七十一日目 問題3.23 デキューの処理を作る。 前の3.22に末尾からリスト追加・削除する機能をつければできそうだ。(8月14日時点) しかしここで問題が発生。 今のままでは末尾から削除する機能がO(1)にならず、どうすればいいかもわからず そして今日に…

SICP始めました 70

SICP幻の七十日目 昨日は飲み会で帰ってきてそのまま寝てしまいました。 かなりアウェイな飲み会だったので若干退屈でした。 次もやるらしいですが参加せず家でSICPを進めようと思っています。 さて気を取り直して今日は進めます。 問題3.21 これは難しそう…

SICP始めました 69

SICP六十九日目 問題3.20はパス。頭の体操になりそうだけど今日も頭が回らない。 ということで、3.3.2 キューの表現を読んだ。 久しぶりに写経タイム。 どうもDrRacketでは、set-car!とset-cdr!が使えないみたいです。 一応回避方法はあって、言語の選択でR…

SICP始めました 68

SICP六十八日目 変更は単なる代入を読んだ。 2.1.3節で登場した以下の処理が今だとわかる。 (define (cons x y) (define (dispatch m) (cond ((eq? m 'car) x) ((eq? m 'cdr) y) (else (error "Undefined operation -- CONS" m)))) dispatch) (define (car z…

SICP始めました 67

SICP六十七日目 問題3.16 3を返すもの( a b c ) 何も返さなものは循環しているリスト 4と7に関しては、単純にリストのエントリーを増やせばいいわけでないはずだが、いまいち分からず。。。 問題3.17〜3.19にかけてパス よくわかりません。 そろそろSICP…

SICP始めました 66

SICP六十六日目 ヘルシープログラマを読んでいたらこんな時間になってしまった。 今回は共有と同一 共有していることを知らないとバグらせる原因になりうる。 問題3.15 同じように見えるものの変更するとその結果は違うよということを図に書く問題。 例によ…

SICP始めました 65

SICP六十五日目 ここらはポインターと図を描く問題が多い。 描くのは面倒くさいものの理解はしやすくなる。 問題3.13 はじめのxは(b) 次のxは(b c d) 問題3.14 ループする 問題3.15 mysteryはリストの逆順を作っている。 計算機プログラムの構造と解釈[第2版…

SICP始めました 64

SICP六十四日目 3.3 可変データでのモデル化 〜 3.3.1 可変リスト構造まで読んだ。 「(define z (cons y (cdr x)))」と「(set-car! x y)」の違い。 一見同じ処理をしているように見えるものの内部的に見ると 前者のリストは、元リストに変更がない。 後者の…

SICP始めました 63

SICP六十三日目 3.2.4内部定義まで読んだ。 今いっちょよくわからずに3.2 評価の環境モデル章が終わった感じです。 問題3.11 今回もお絵描きタイム。 とりあえず先に進めよう。 この章が原因でわからなくなったら戻ってこよう。 計算機プログラムの構造と解…

SICP始めました 61

SICP六十一日目 昨日の復習も兼ねて、3.2.3 局所変数の入れ物としてのフレームまで読んだ。 代入という概念を取り入れたことで、今までの置き換えモデルは適切ではないので、 新しい手続き作用の環境モデルを取り入れましょうという話。 うーむ。今一歩理解…

SICP始めました 60

SICP六十日目 3.2評価の環境モデル〜3.2.1評価の規則まで読んだ。 ここまでは、特に問題がないので平和なSICPでした。 ただ、時間も時間なので理解がイマイチ。 明日もう一度復習してから次の3.2.2 単純な手続きの作用に進んでいきます。 計算機プログラムの…

SICP始めました 59

SICP五十九日目 3.1.3 代入を取り入れた代価を読んだ。 題名が「代入」まるで悪者のような印象。。。 確かに再帰的な処理いわゆる関数型プログラミングと代入を取り入れた命令型プログラミングを比べると今まで気にしなくてよかった箇所でエラーが入り込む危…

SICP始めました 58

SICP五十八日目 問題3.8 モンテカルロ積分と身構えていましたが、意外とわかりました。 確率から値を導き出すというのは面白い考え方ですね。 ( define ( p x y ) ( <= ( + ( sqrt x ) ( sqrt y ) ) 1 ) ) ( define ( estimate-integral p x1 y1 x2 y2 trial…

SICP始めました 57

SICP五十七日目 3.1.2代入を取り入れた利点を読んだ。 今までの再帰的な処理では、値を覚えておくためにはつど計算が必要となるのに対して、代入を取り入れたことで処理をカプセル化できる。 それはそれで利点ではあるかもしれないが、なんだかLISPっぽさが…

SICP始めました 56

SICP五十六日目 3.1.1局所状態変数を読んだ。 今まで非破壊的変数を使っていたところを破壊的変数を使うようになった。 さすがにまだ序盤だけあってついていけてる。 昨日の夜がんばろうと思ったもののそんなに進んでいないのは気にしない。 SICP始められま…

SICP始められませんでした 1

今帰ってきました。 なかなか根の深いトラブルの調査をしていたらいつの間にやらこの時間。 実のならない無駄な資料作りよりは、充実した一日ではありましたね。 ただ、明日というか今日はお休みなので、ガッツリやりたいと思います。 とりあえず今日はもう…

SICP始めました 55

SICP五十五日目 問題2.81〜以降が読んでもさっぱり分からない。 多分、二章全体の理解がまだまだ甘いためだ。 もういっそのこと全部飛ばそうかしら。 そうしよう。 さすがに一通り読んだだけでは、まるで理解できていないと思うので、ここで止まるよりは分か…

SICP始めました 54

SICP五十四日目 問題2.79〜2.80 パス 2.5.2異なる型のデータの統合を読んだ。 強制型変換つまりは、キャスト? 今までは普通の数、有理数、複素数をそれぞれ別のパッケージとして処理をまとめてきた。 これらの数はお互い階層構造を持っているので、お互いの…

SICP始めました 53

SICP五十三日目 問題2.78 ぱっと問題文を読んだときは何をすればいいのかよくわからなかった。 とりあえず、type-tag、contents、attach-tagで数を認識できるようにすればいいのか? 以下アンダーライン部分が追加したところ ( define ( type-tag datum ) ( …

SICP始めました 52

SICP五十二日目 2.5.1汎用算術演算を読んだ。 ここも写経タイム。 いままでの内容の仕上げな雰囲気が漂っている。 まだ理解が甘いところもあるのでイマイチピンと来ていない部分もある。。。 問題2.77 apply-genericが二回呼び出される。 複素数の表現をどち…

SICP始めました 51

SICP五十一日目 この章は、もう少し復習したほうがよさそう。 問題2.74 回答の糸口がつかめず断念 まだデータ主導プログラミングの考え方の理解が甘い 問題2.75 これはできた。 make-from-real-imagと似たように作れとのヒントがあったため ( define ( make-…

SICP始めました 50

SICP五十日目 問題2.73は、意外に長い道のりでした。 もう少し簡単な題材だと分かりやすいのに、まさに飛ばした微分の問題を題材にするとは。。。 問題2.73 いろいろカンニングした結果やっとわかりました。 a. 単項だから b.インターフェースは以下のとおり…

SICP始めました 49

SICP四十九日目 問題2.73を眺めて終わった。 今日は、久しぶりに飲み会だったため、飲み過ぎ&頭働かず(通常運転)で 断念。 どこかで聞いた事があります。 プログラマは、お酒を飲むとプログラミング能力がほとんどなくなると。。。 当たり前ですが、プロ…

SICP始めました 48

SICP四十八日目 前日の2.4.2タグつきデータに引き続き2.4.3データ主導プログラミングと加法性を読んだ。 なるほど、ここもまた面白いことが書いてあった。 つまるところJavaなどのオブジェクト指向プログラミングに似ている。というかこっちが本家? 型によ…

SICP始めました 47

SICP四十七日目 問題2.69〜2.72 ギブアップ 一応答えだけ見て分かったフリをしよう。 2.4抽象データの多重表現を読みながら黙々と写経タイム。 なるほど型タグを使えば、汎用手続きを作る上で異なる方法で表現されるデータにも対処できる。 データをどう表現…

SICP始めました 46

SICP四十六日目 問題2.68 色々カンニングしたものの何とか形になった。 これを素で解けるようにがんばろう。 ( define ( encode message tree ) ( if ( null? message ) ‘( ) ( append ( encode-symbol ( car message ) tree ) ( encode ( cdr message ) tre…

SICP始めました 45

SICP四十五日目 三連休1日目張り切って読もうとしたものの結局いつもと変わらない進捗状況だった。 Huffman符号化木を一通り読んで写経した。 簡単なところでミスをしたせいでデバックに時間がかかってしまった。 問題2.67 実行するだけ 結果は、「’( A D A …

SICP始めました 44

SICP四十四日目 二進木イメージは出来るもののリスト表示にしようとするとカッコに惑わされる。 まだまだlispの真髄には程遠いです。 問題2.66 ( define ( lookup given-key set-of-records ) ( if ( null? set-of-records ) #f ( let ( ( key-records ( caa…

SICP始めました 43

SICP四十三日目 問題2.64 letの変数に再帰処理が入るともはや何をしているのが追っていくのが難しい a 入力したリストの個数で左側の個数を決定した後に左側のリストと 右側のリストをそれぞれpartial-treeに渡している。 渡されたpartial-treeは上と同じこ…

SICP始めました 42

SICP四十二日目 問題2.62 なぜか木構造をリスト表記にするところでハマった a どちらも同じ結果となる b 再帰的な処理の方が遅くなる? 問題2.63 時間切れ 明日がんばる 計算機プログラムの構造と解釈[第2版] 作者: ハロルドエイブルソン,ジュリーサスマン,…

SICP始めました 41

SICP四十一日目 意外に大変だった。 最近急に暑くなってバテ気味です。 SICPもバテ気味です。 今こそ本書を一旦再構成するともっと良いものが生まれるのではないか。と思う今日この頃です。(私にはその力はありませんが。。。) 問題2.62 ( define ( union-…

SICP始めました 40

SICP四十日目 問題2.61 ( define ( adjoin-set x set ) ( if ( element-of-set? x set ) set ( cons x set ) ) ) これでいけるかと思ったものの、( adjoin-set ‘5 ‘( 2 3 4 ) )このケースだと’( 5 2 3 4 )と なってしまい順序づけられた表現ではなくなってし…

SICP始めました 39

SICP三十九日目 問題2.60 ( define ( adjoin-set x set ) ( cons x set ) ( define ( union-set set1 set2 ) ( append set1 set2 ) これ以外は変更なし element-of-set?がある以上は、集合が多くなればそれだけ効率は悪くなる 計算機プログラムの構造と解釈[…

SICP始めました 38

SICP三十八日目 問題2.56〜2.58 パス 微分よくわからないです。 問題2.59 ( define ( union-set set1 set2 ) ( cond ( ( null? set2 ) set1 ) ( ( null? set1 ) set2 ) ( ( element-of-set? ( car set1 ) set2 ) ( union-set ( cdr set1 ) set2 ) ) ( else (…

SICP始めました 37

SICP三十七日目 2.3.2 例:記号微分を読んだだけ。 とりあえず処理内容を追ってみたもののいまいちピンとこない。 写経をして実行してみた。 前のページは簡単だったのにまたしても雲行きが怪しくなってきた。 難易度が極端な例が多くてなかなか進まないのは…

SICP始めました 36

SICP三十六日目 2.3記号データまで到達。そろそろ二章も終わりに近づいてきたか!と思ったものの後ろのページを見てみるとまだ半分ぐらいだった。 問題2.53 打ち込むだけなので特に記載なし 問題2.54 ( define ( equal? a b ) ( cond ( ( and ( null? a ) ( …

SICP始めました 35

SICP三十五日目 問題2.48〜2.52パス 昨日belowとbesideがないから画像が出せず断念と記載したものの問題2.51に対象の演算を定義せよ。との問題があった。 なるほど、どうりで動かないと思ったら始めからある処理ではなく作るのね。 問題もなんだか似通った内…

SICP始めました 34

SICP三十四日目 画像が出るように準備したもののbelowとbesideが動かず諦めたが、それ以降はもしかして使わない? 問題2.46 なんだか急に難易度が低くなった。 ( define ( make-vect v1 v2 ) ( cons v1 v2 ) ) ( define ( xcor-vect v ) ( car v ) ) ( defin…

SICP始めました 33

SICP三十三日目 問題2.42〜2.43はパス ただし、mapの勉強にはなりそうなのでできれば後でやる 問題2.44 right-splitのbesideとbelowを入れ替えるだけ 問題2.45 ( define ( split op1 op2 ) ( lambda ( painter n ) ( if ( = n 0 ) painter ( let ( ( smaller…

SICP始めました 32

SICP三十二日目 頭が混乱する問題だった。 まだイマイチわかってない物のなんとか形になった。 問題2.41 ( define ( unique-trio n ) ( flatmap ( lambda ( i ) ( flatmap ( lambda ( j ) ( map ( lambda ( k ) ( list i j k ) ) ( enumerate-interval 1 ( -…

SICP始めました 31

SICP三十一日目 問題2.40 前の処理が複雑だった分この問題をかなり警戒していたもののよくよく見てみると 単純に処理を外だししているだけだった。 ( define ( unique-pairs n ) ( flatmap ( lambda ( i ) ( map ( lambda ( j ) ( list i j ) ) ( enumerate-…

SICP始めました 30

SICP三十日目 なんだかんだで一ヶ月がたちました。 まだ、三分の一も進んでいませんが、少しずつ前に進んでいきたいです。 昨日の続きで写像の入れ子を再度読みました。時間はかかったもののなんとか処理を追うことができました。今日はここでとりあえず終了…

SICP始めました 29

SICP二十九日目 今日は写像の入れ子の章を読んだものの処理が複雑すぎてイマイチよくわからず・・・。 もう少し格闘する必要がありそうです。 この先の問題をちらっと見たもののさっぱりイメージがわからずさらに進みが遅くなりそう。 果たして、読み切るこ…

SICP始めました 28

SICP二十八日目 今日は開始が遅かったから1問しかできなかった。 問題3.39 うーむ。イマイチリストの理解が甘い ( append y ( list x ) ) ( cons y x ) 計算機プログラムの構造と解釈[第2版] 作者: ハロルドエイブルソン,ジュリーサスマン,ジェラルド・ジェ…