exercise

exerise 4.55-69

もうblogじゃないね、ここのサイト....。(今更) ただの演習うp場になっとる。 ちなみに部活の読書会で4章読み終わるなどしてたり。5章はどうなるんかなー。まぁそれはともかく、せめて4章の演習は終わらせたい。あと少しだしね。 てな訳で以下解答。 ちなみ…

exerise 4.50-54

むーん。ということで再掲その3。RSSとかでこの記事確認してる方に色々混乱させてしまい申し訳ないです。(といってもここのRSS見てる人殆どいない気もするが)

exerise 4.44

日記が長いのか知らんが昨日の分が上手く見れないので、今日の分として再掲。 なんぞこれー・・・。

exerise 4.45-49

再掲その2。変な操作したんかなぁ・・・。まぁ日記の下書きはこっちで持ってるからいいけど。4.3の Parsing natural language の演習分。 長いので続きから

exerise 4.41,42,43

明日が最後の試験となるとblog更新にも熱が(ry exercise 4.41 ambを使わずに multiple-dwelling を解け という問題。 以下が以前書いた解答。 我ながら酷い解答だな、おい。 (use srfi-1) (use util.combinations) (define (multiple-dwelling) (define (bak…

exerise 4.38,39,40

気付いたらずっとblog放置しとった・・・。 そろそろまたサークルでのSICP読書会もあるっぽいし、また読み始める気分。 せめて春中には読み切りたいなぁ(夏もおまえそんなこと言ってただろ、とか言う突っ込みは無しの方向で) とりあえず授業中にちまちま進め…

exercise 4.35~37

ambの実装に対しての理解も進んだ(はず)なので問題に戻る。 exercise 4.35 (define (an-integer-between a b) (require (not (> a b))) (amb a (an-integer-between (+ a 1) b))) 実行してみると、 ;;; Amb-Eval input: (a-pythagorean-triple-between 1 15)…

exercise 4.32~34

最近進行が遅いorz。 まさに光陰なんとら。・・・ていうか、このままだと4章終わんないよ(泣) 予定が潰れた一番の原因は某ゲームだが、そんなこと言っても始まらん。 それにゲームはゲームで楽しめたのだから、それを否定したくは無いしね。 exercise 4.32 c…

exercise 4.29~31

exercise 4.29 (square (id 10)) はメモ化に関わらず100 countはメモ化有りだと1、無しだと2。 squareの中で(* x x)ってなってるので、メモ化しないと(id 10)が2回計算されるんです な。 exercise 4.30 a.うまく説明できないけど、newlineもdisplayもprimiti…

exercise 4.27~28

exercise 4.27 なんか似たようなのを3章でやったなぁ・・・、と思ったらfootnoteにかいて あったか。とりあえず結果は ;;; L-Eval input: count ;;; L-Eval value: 1 ;;; L-Eval input: w ;;; L-Eval value: 10 ;;; L-Eval input: count ;;; L-Eval value: 2…

exercise 4.25~26

はいはい気付いたらリトバスしてましたよ、っと。とは言えそろそろ一区切りついた感じなので、今度こそSICP再開。 exercise 4.25 applicative-order -> 無限ループ。unlessの条件判定と一緒に(* n (factorial (- n 1)))も計 算しちゃうので、 とまらずに fac…

exercise 4.22~24

ex4.22 analyzeにlet->combninationを加えるだけ (define (let? exp) (tagged-list? exp 'let)) (define (let->combination exp) (let ((bindings (cadr exp))) (cons (make-lambda (map car bindings) (cddr exp)) (map cadr bindings)))) ;;analyzeに以下…

exercise 4.19~21

ex4.19 ・・・実行順序、というかdefineの書く順番を変えれば、それっぽく動かすことも時にはできるだろうが、一般的な手法は私にはさぱーりです・・・。 ex4.20 a (define (letrec-bindings exp) (cadr exp)) (define (letrec-body exp) (cddr exp)) (defin…

exercise 4.18

続き ex4.18 やってみる前に解答。 4.18の例だと、dyの定義時にyが*unassigned*でエラー。 ようするに、この例だと、内部定義を相互に行えないというかなんというか。まぁということで実行してみるか。 まず、delayとかの準備 (define (delay-exp exp) (cadr…

exercise 4.11~4.12

むー。書き貯めてたのをいっぺんにうpするのはめんどい・・・ まぁここ最近ネット環境が無かったので仕方ないか。 あと、明日(というか今日)は下宿に帰ってリトバス三昧な予定なので、今うpらないと・・・ ex4.11 (define (make-frame variables values) (…

exercise 4.5~4.10

ex4.5 こんな機能もあったのか、condよ・・・。 (define (cond-recipient-clause? clause) (eq? (cadr clause) '=>)) (define (cond-recipient clause) (caddr clause)) (define (expand-clauses clauses) (if (null? clauses) 'false ; no else clause (let…

exercise 4.1~4.4

4章開始。 gaucheだとうまく実行出来ないので、mzschemeに変えてみた。なんだか悔しい・・・。ちなみにgaucheだと ;;; M-Eval input: (+ 1 1) gosh: "error": invalid application: ((primitive #<subr +>) 1 1) とエラー・・・。promitiveなprocedureを呼ぶと揉める</subr>…

exercise 3.73~82

ようやく3章終了か。 ex3.73 (define (RC r c dt) (lambda (i v0) (add-stream (scale-stream i r) (integral (scale-stream i (/ 1.0 c)) v0 dt)))) 実行してもあってるか確かめにくいなぁ。 ex3.74 (define zero-crossing (stream-map sign-change-detecto…

exercise 3.72

前回適当に解いちゃった3.72であるが、問題文をちゃんと読むと 組み合わせはピッタリ三つでなくてもいいっぽい気がする。 あとで直しておくか。

exercise 3.68~72

生活リズムがこわれているので(昨日は9時睡眠、5時起床。正確には17時起床だけどね☆)、徹夜して翌日の夜まで起きる→寝る→生活リズムが戻るね! ・・・とかバカな考えを実行中。後半に行くにつれ分け分からんコードになっているのは使用です。 まぁいいや、…

exercise 3.67

少し勘違いしてたので解くのに時間がかかった・・・orz (define (pairs s t) (cons-stream (list (stream-car s) (stream-car t)) (interleave (stream-map (lambda (x) (list (stream-car s) x)) (stream-cdr t)) (pairs (stream-cdr s) t)))) ほむ。某所に…

exercise 3.66

まぁ多分答えは出せたはず。 ただし証明はしてない。どうしましょ。 とりあえず、紙に書いて適当に推論した結果がこれ (define (ref-of-m-n m n) (cond ((> m n) (error "m is larger than n!" (list m n))) ((= m n) (- (expt 2 m) 2)) (else (- (* (expt 2…

exercise 3.64, 65

まずい、今日は進みが遅い・・・。 それ以上に生活リズムが… ex3.64 (define (stream-limit stream tolerance) (if (< (abs (- (stream-car stream) (stream-car (stream-cdr stream)))) tolerance) (stream-car (stream-cdr stream)) (stream-limit (stream…

exercise 3.63

こういう「説明せよ!」というタイプの問題は単純にコード書くより時間がかかる・・・orz問題は (define (sqrt-stream x) (cons-stream 1.0 (stream-map (lambda (guess) (sqrt-improve guess x)) (sqrt-stream x)))) (define (sqrt-stream x) (define guess…

exercise 3.58~62

やっとch3.5.2が終わった・・・ いつになったら4章にたどり着くのやら。 っとその前に、無限リストだとdisplay-streamではちょっと不便なので (define (display-stream-n-lines stream n) (if (= n 0) 'done (begin (display-line (stream-car stream)) (dis…

exercise 3.53~57

ex3.53 2^nですね、わかります。 ex3.54 (define (mul-stream s1 s2) (stream-map * s1 s2)) (define factorials (cons-stream 1 (mul-stream factorials (stream-cdr integers)))) ex3.55 ;; なんとなく二つ書いてみた。 ;; (define (partial-sums stream) …

exercise 3.52

実家でだらだら過ごしすぎた・・・。 それはともかく、代入が絡むと色々面倒だと実感。 ちなみに以下の説明はほとんど殴り書き・・・。 というか、ちゃんと理解できてるのかな・・・ とりあえず、まずはメモ化してるバージョン。 問題にあるようにsumの値を…

exercise 3.50~51

3.50 (define (stream-map proc . argstreams) (if (stream-null? (car argstreams)) the-empty-stream (cons-stream (apply proc (map stream-car argstreams)) (apply stream-map (cons proc (map stream-cdr argstreams)))))) applyの最後の引数はリスト…

exercise 3.43~46

実家でまたーりしてたら、部活のICPC練習会忘れてた・・・。orz ゆっくりしていった結果がk(ry

exercise 3.47~49

ようやく3.4終了。 ページ自体は短かったが、意外に時間がかかったなぁ。少し長いので続きを読むから。