sicp

計算機プログラムの構造と解釈 第二版 P62 問題2.25

パズルみたいな問題。 いったん、よくわかんないcarを入れるのがポイント。 ま、よく考えるとわかるんだけども。 listの定義をよくふまえないと、ちょっとあれだ。 実装 #!/usr/local/bin/gosh ;; -*- coding: utf-8 -*- (use ggc.debug.trace) (use math.mt…

計算機プログラムの構造と解釈 第二版 P63 問題2.26

この問題は、問題が答えみたいなもんで、 やってみれば大体わかっちゃうよね。 (cons x y) の答えが意外だったが、よくよく考えると、ま、そうだよね。みたいな。 結構慣れが必要だな。 実装 #!/usr/local/bin/gosh ;; -*- coding: utf-8 -*- (use ggc.debug…

計算機プログラムの構造と解釈 第二版 P59 問題2.23

・リストを左から順に手続きを作用させる手続きfor-eachをつくる。 そんな説明が必要なほど難しくはないと俺は感じているのである。 carして、実行して、cdrしたやつを、次の回にまわしてやるみたいな感じ。 はい実装 #!/usr/local/bin/gosh ;; -*- coding: …

計算機プログラムの構造と解釈 第二版 P60 問題2.22

これも、そんな難しくないな。 この二つを求められればいいのさ。 ・square-listが逆の順に答えのリストをつくっちゃった、なぜか? ・直したsquare-listがまた上手く動かなかった。なぜか? 1番目の方はlistの入れ方が、右からつめていってっからダメ。 2番…

計算機プログラムの構造と解釈 第二版 P60 問題2.21

マー楽勝っす。 ってなってるところを埋める問題。 はい実装 #!/usr/local/bin/gosh ;; -*- coding: utf-8 -*- (use ggc.debug.trace) (use math.mt-random) (define nil '()) (define (square-list items) (if (null? items) nil (cons (* (car items) (car…

Shibuya.lisp テクニカルトーク#3

今回こそは参加したい! そして今学校のゼミ。 これからECナビへ向かう。 17時からバンドの練習!! 参加できるのか??? 俺はこれを読むべきだ。 http://shibuya.lisp-users.org/2009/07/04/sltt-3-tb/

計算機プログラムの構造と解釈 第二版 P59 問題2.20

この問題はとてもおもしろい。 可変引数っていうんだっけか?そういうのを実装できていい。 そんでこの問題の目的は ・一つかそれを越える個数の整数をとり、先頭と同じ偶奇性をもつ引数のリストを返す手続きparityを定義する。 まずは、ドット末尾記法をつ…

計算機プログラムの構造と解釈 第二版 P58 問題2.19

目的は ・手続きfirst-denominationを定義する ・手続きexcept-first-denominationを定義する ・手続きno-more?を定義する ・リストcoin-valuesの順はccの答えに影響があるか?なぜか?語る あんまり難しく考えないほうがいい。 no-more? はどう考えても、リ…

計算機プログラムの構造と解釈 第二版 P58 問題2.18

この問題もずるっこい感じで初めは考えた。 この前の問題で、appendっていうlistとlistをくっつけちゃってくれる 手続きをつくったのでそれを利用する方法。 reverseを再帰しつつつくれそうだ。 そんなずるっこい方法でやってたら、 勉強会の時に、appendな…

計算機プログラムの構造と解釈 第二版 P58 問題2.17

この問題はずるっこい感じでやってしまった。 説明のところで、 list-refっていう、listの順番の添字から値をとれる手続きを作ったことに加え、 listの長さを求めるlenghという手続きを作ったから Javaだとかそういうのやったことあるとわかると思うけど、 l…

計算機プログラムの構造と解釈 第二版 P53 問題2.15

誤差が0の区間(この場合1)との積算は、誤差の増加はない。 区間(R1、R2)同士の演算が少ない方が誤差が少なくなる。

計算機プログラムの構造と解釈 第二版 P53 問題2.16

(注意: この問題は非常に難しい.) と書いてあるのでまともにやっていないけど、計算の量が増えれば、誤差は増えると思う。工夫は、、、できるのかなぁ。。。

計算機プログラムの構造と解釈 第二版 P53 問題2.14

Lemの正しさを示すには実際やってみることです。実装 #!/usr/local/bin/gosh ;; -*- coding: utf-8 -*- (use ggc.debug.trace) (use math.mt-random) ;;interval (define (make-interval a b) (cons a b)) (define upper-bound cdr) (define lower-bound car…

計算機プログラムの構造と解釈 第二版 P53 問題2.13

題意は以下、・二つの区間の積の相対許容誤差を、因子の許容誤差をつかって近似できる簡単な式があることを示す。 ま、取り合えずあれだ、二つの区間の積をやってみればわかるだろうという、 大雑把な感じでやってみる。 積をとる二つの区間をi0とi1とする …

計算機プログラムの構造と解釈 第二版 P53 問題2.12

何だか忙しくていろいろブログをかけなかったけども。 やっとこ続き行きます。 で、この問題ですがたいした問題ではないです。 ・構成子make-center-percentを定義 ・選択子percentを定義 俺は過去を振り返らない。 ということで、もう実装だけをかいておわ…

計算機プログラムの構造と解釈 第二版 P53 問題2.9

文章が難しい。 頑張って読んでみるとこういうこと。・二つの区間の和(または差)の幅は、足されるべき(または引かれるべき)区間の幅だけの関数であることを示せ。 ・んで、乗算と除算についてはこれが成り立たないことを示す。 一つ目の「二つの区間の和の..…

計算機プログラムの構造と解釈 第二版 P53 問題2.8

この問題は、intervalどうしの差を求める。 手続きsub-internalを定義 んで、難しいのがどんな場合に、差は最小値、最大値になるのか? どういう組み合わせがあるか考えてみる。 大 - 大 小 - 小 大 - 小 小 - 大 この四つの中から考える。 んー。 仮に以下…

計算機プログラムの構造と解釈 第二版 P53 問題2.11

やることは、 ・Benが言っているように手続きを書き直す。 Benがそもそもなにを狙っているかというと、 今まで使っていた、mul-intervalはmaxとかminをつかって、 最小値と最大値を出していて結構ずるっこい。 だけど、これをちゃんと整理して作り直しましょ…

計算機プログラムの構造と解釈 第二版 P53 問題2.10

・0に跨がる区間があったら、エラーを出す!と言うのをやればいい。 ちょっと自信ないけど、もう実装です。 #!/usr/local/bin/gosh ;; -*- coding: utf-8 -*- (use ggc.debug.trace) (use math.mt-random) ;;P53 ;;和 (define (add-interval x y) (make-inte…

計算機プログラムの構造と解釈 第二版 P53 問題2.7

この問題は、 選択子upper-bound 選択子lower-bound を求める問題。 これはそんなに難しくない。対を作るのは、consだから、、、 (define upper-bound cdr) (define lower-bound car) これでいいのかな? 僕はかなりはりきって。 (define (lower-bound inter…

計算機プログラムの構造と解釈 第二版 P52 問題2.6

この問題、異常に手間暇をかける必要がある。 お母さんの愛情料理、もしくはシェフのこだわりカレーのような問題。 まず、必要な解は以下の3つ oneの直接定義 twoの直接定義 手続き「+」の定義 oneの直接定義 とにもかくにもまずはoneを求めてみる。 oneを定…

計算機プログラムの構造と解釈 第二版 P52 問題2.5

これは素数の性質を生かした感じの問題すね。 非負の整数の対は数と算術演算だけを使って表現できることを示せ。 これに対応する手続きcons、car、cdrの定義はなにか。 これ、素数の性質なんだけど、素数(wikipedia) http://ja.wikipedia.org/wiki/%E7%B4%A0…

計算機プログラムの構造と解釈 第二版 P52 問題2.4

おれ、がんばる。 (car (cons x y))がxを生じることを証明。 これに対するcdrの定義 証明ってどうスリゃいいかな。 具体的におっていけばいいのかな? こんな感じかな? ;;0 (define (cons x y) (lambda (m) (m x y))) ;;1 (define g (cons 1 2)) ;;2 (defin…

計算機プログラムの構造と解釈 第二版 P49 問題2.3

この問題は面倒くさくて2回解いた。 ちゃんと問題を読んでおけば良かった。 題意はこんな感じ。 長方形の表現 rectangle を実装する。 で、それなんだが、2種類のrectangleを考えなきゃならない。 さらに、 「長方形の周囲の長さ」を計算する手続き: perimet…

計算機プログラムの構造と解釈 第二版 P49 問題2.2

この問題とてもいい問題だと僕は思うのです。 日本語が難しいですが、 文章を読んで、図をイメージする力も大切だと、 世間では言いますし。 求めるのは、こんな感じになるのかな。 構成子: make-segment 選択子: start-segment 選択子: end-segment と 構成…

計算機プログラムの構造と解釈 第二版 P49 問題2.1

とうとう二章突入ですね。 この問題は分数の符号を扱う問題。 題意としては・make-ratという手続きをつくる。make-ratは分母がマイナスの時、分母をマイナスのままにしないで、 分子をマイナスにしてやると言う感じ。 まーそんな感じでわりかし単純な問題で…

計算機プログラムの構造と解釈 第二版 P44 問題1.46

とうとう一章の最後の問題ですね。 いきなり反復改良法とか言ってビビるけど心配なし。 説明は書いてある。 題意をつかむ。 ふむふむつまり、 1.iterative-improveと言う手続きを作る。 この手続きには引数として ・予測値が十分良好であるか調べる手続き ・…

計算機プログラムの構造と解釈 第二版 P44 問題1.45

はい。この問題をやっている間に、HDがぶっ壊れたりして、 そういう意味でかなり難問でした。 この問題解き終える前に勉強会でやっちゃっておいてあるので、悔しい限りです。 以下、本題。この問題はこんな感じで進めていく。 1.n乗根を計算するときに、何回…

計算機プログラムの構造と解釈 第二版 P44 問題1.44

いきなり平滑化とかいって、解らない日本語で凹む。 でも説明が本文にかいてあるから、特に気にしないことにする。 この問題の必要な解答は2つ ・入力:ある手続き(f)。出力:平滑化関数を計算する手続き。って感じの手続きsmooth定義 ・smoothとrepeatedを…

計算機プログラムの構造と解釈 第二版 P44 問題1.43

問題を読む。 これもたいしたことなさそうだ。 要は、指定した回数ある手続きを繰り返して実行してくれる そんな「手続き」を返す 手続きを作ればいいんだ。 そんで、前の章で作ったcomposeも使わないといけないようなので、 それも考慮に入れる。 んで、こ…