Scheme

SICP問題1.21

今回は素数の問題ひたすら除数を見つける関数 (define (smallest-divisor n) (find-divisor n 2)) (define (find-divisor n div) (cond ((> (* div div ) n) n) ((isdivides div n) div) (else (find-divisor n (+ div 1))))) (define (isdivides a b) (= (r…

SICP問題1.20

今回は最大公約数に関する問題。↓は最大公約数を求める手続き。 (define (gcd a b) (if (= b 0) a (gcd b (remainder a b)))) でこの手続きを使って(gcd 206 40)を正規順序、作用的順序で評価していったら remainderは何回実行されるか。

SICP問題1.19

最近、さぼっていたが、少しずつ再開。今回の問題は フィボナッチ数列に関する問題 (define (fib-iter a b count) (if (= count 0) b (fib-iter (+ a b) a (- count 1))))が a←a+b b←aとなる変換Tに関する問題

問題1.18

今回の問題は 問題1.16 問題1.17を使って工夫するらしいのだが…

SICP問題1.17

整数の乗算を足し算であらわすと

問題1.16

今回はb^nとかのべき乗の計算を再帰ではなくて反復で解く問題。

問題1.15

久しぶりに問題を解く。 で、今日の問題は

SICP問題1.14

今日の問題は、11セントの両替の場合の数を求める関数の木構造とプロセスのスペースとステップ数を求める問題。

SICP問題1.13

今回の問題はフィボナッチ数列の証明問題なのだが…証明問題は苦手だ。全然分からない。分かったときにここに書くことにして今はとりあえずパスするか。

体調が戻ってきたので

そろそろ解くか。

SICP問題1.12

今回はpascal三角形を再帰で解く問題。

SICP問題1.11後半

昨日の問題。 会社で考えてみたらすぐ解決した。

SICP問題1.11前半

最近進んでなかったので問題を解いてみる。

SICP問題1.10

今回はAckermann関数という数学関数についての問題。 (define (A x y) (cond ((= y 0) 0) ((= x 0) (* 2 y)) ((= y 1) 2) (else (A (- x 1) (A x (- y 1))))))

SICP問題1.9

(+ a b)を1足す(inc a)と1引く(dec b)を用いて実装する二つの定義

SICP問題1.8

最近実験している時間が無いのだが、 会社の休憩時間を利用して考える。実験は後でまとめてやる。 で、今回の問題は立方根の実装だが

SICP問題1.7

まだ実験してないが、 http://d.hatena.ne.jp/xiombatsg/20060626#p1 のgood-enoughで 値が非常に大きいか小さいかする時にうまく動作しないことがあるのは そもそも、

起動時にadd-load-path

Gaucheの起動時にadd-load-pathをしたかったが、 どうやら、 起動時に読み込まれるファイルは.gauchercらしい emacsの.emacsと同じでスクリプト書けば読み込む。リファレンス調べて必要そうなの列挙していくか。

続・SICP問題1.6

昨日の無限ループに入る問題。http://d.hatena.ne.jp/xiombatsg/20060626#p1であれから考えたが、結論がわかれば大したことは無かった。 (define (new-sqrt-iter y x) (new-if (good-enough y x) y (new-sqrt-iter (improve y x) x)))やはりこれが問題。 ま…

SICP問題1.6

いきなりつまづいた。 (define (sqrt-iter y x) (if (good-enough y x) y (sqrt-iter (improve y x) x))) のifを (define (new-if predicate then-clause else-clause) (cond (predicate then-clause) (else else-clause)))を使って置き換えた (define (new-…

SICP問題1.4

(define (a-plus-abs-b a b) ((if (> b 0) + -) a b))これの振る舞いを説明しろという問題 この手続きは b>0 だった場合、 (> b 0)が#tとなり、+が展開される。つまり、 1: ((if (> b 0) + -) a b)) 2: ((if #t + -) a b)) 3: (+ a b) b<=0だった場合、 (> b…

load-path

それにしてもload-pathを変更するにはどうやるんだ?いちいちファイルをload-pathが通っているdirectoryに cpするのもあれだしなぁ。何かいい方法は無いものか。

ロード

結局、schemeスクリプトをファイルから読み出すには ファイルがload-pathが通ってないと駄目らしい。これでまぁ、問題は無いか…

ロード

ファイルからschemeスクリプトを呼び出す方法を調べた。 >gosh -l$filenameかGaucheインタプリタ中に >(load "$filename")するかどっちかでも、でない。なぜだ?

SICP問題1.2

問題 (/ (+ 5 4 (- 2 (- 3 (+ 6 (/ 4 5))))) (* 3 (- 6 2) (- 2 7)))うーむ。ファイルからどう呼び出すんだ?

SICP問題1.1

gosh>10 10 gosh>(+ 5 3 4) 12 gosh>(- 9 1) 8 gosh>(/6 2) 3 gosh>(+ (* 2 4) (- 4 6)) 6 gosh>(define a 3) a gosh>(define b (+ a 1)) b gosh>(+ a b (* a b)) 19 gosh>(= a b) #f gosh>(if (and (> b a) (< b (* a b))) b a) 4 gosh>(cond ((= a 4) 6) (…