2009-09-01から1ヶ月間の記事一覧

サンフランシスコ滞在記2 ~ SFは山の街

山の街と書くと、神戸市北区にある神戸電鉄の駅を思い出してしまうが、サンフランシスコはそんなの目じゃないくらい勾配がキツい。地図を見るとわかるが、DownTownからFisherman's Warfまで山が一個存在する感じ。なぜ、こんなところに街を切り開いたのか、…

サンフランシスコ滞在記1 ~ University of California-Berkeley

ひょんなことから学会で発表することになってしまったため、本日、サンフランシスコにイン。もっと写真を撮っておけば良かったのだが、なにぶん、時差ぼけで疲れてたので、十分に撮れなかった。サンフランシスコ空港(SFO)からは、BARTで移動。このBARTは1974…

問題2.7-2.13

問題2.7 (define (make-interval a b) (cons a b)) (define (lower-bound z) (car z)) (define (upper-bound z) (cdr z)) 問題2.8 (define (sub-interval x y) (make-interval (- (lower-bound x) (upper-bound y)) (- (upper-bound x) (lower-bound y)))) …

問題2.6 (λって結局何なのさ〜)

λ計算のところ。データは全て手続きで記述できますよっと。 いや、正直、問題はわかるんだ。ただ、コレが何なのか人に説明できるところまでいってない。とりあえず、問題を解くと、zero, one, twoは、それぞれ、 zero = λs.(λx.x) one = λs.(λx.sx) two = λs…

問題2.5

なんか、現実逃避のためにSICPをやってる気がしてきた。これが終わったら、仕事に復帰します。 ; Constructor (define (cons-exp a b) (* (expt 2 a) (expt 3 b))) ; Selector (car) (define (car-exp z) (if (not (= (remainder z 2) 0)) 0 (+ 1 (car-exp (…

XP祭り2009 アージャイルとは開発手法か、それとも。。。

て言うことで行ってきたよ。 ただ、寝坊+自宅の無線LANがつながらない、と言うトラブルに見舞われた上、高田馬場で反射的にバスに乗ったら、理工学部には行かず、本部の方に行ってしまった、と言うダメダメぶりを発揮してしまい、1時間ほど遅刻してしまった…

第1章振り返り

手続きの抽象がメインテーマと言うことで、Square Rootの定義を振り返ってみましょう。 定義(p.12) (define (sqrt x) (the y (and (>= y 0) (= (square y) x)))) yが0以上でかつ2乗するとxになるもの と言う定義をそのままS式にしてみました、って感じ。 で…

俄然面白くなってきた自民党総裁選挙

死に体の党の総裁選びなんてどうでもいいと思ってたけど、今日のサンデープロジェクトを見て変わった。河野太郎いいじゃん。面白いと思ったエピソード 挙党態勢、全員野球と言う言葉は、悪しき習慣を隠してしまう。 老兵はベンチではなく、スタンドから見て…

コールバック関数の設定

http://d.hatena.ne.jp/yukichanko/20090827/1251358163 Rubyの場合、引数を指定しなかった場合でも、即関数実行になってしまうため、既存の関数をCallback関数に設定する場合にどうするんだろう?と悩んでしまった。何かいい方法がないかなぁ、と思ってネッ…

SICP Lite #4

今回で4回目。ようやく1章の終わりが見えてきた感じですが、何となく大事なことが置いてけぼりの感じもしています。とりあえず、SICPを読む上で、最も難関と言われる数学の話。第1章の主題は、単純な手続きを抽象化する方法を身につけて、汎用な関数を作り上…

問題2.4

これも驚き問題。 (define (cons x y) (lambda (m) (m x y))) (define (car z) (z (lambda (p q) p))) (car (cons x y)) => (car (lambda (m) (m x y))) => ((lambda (m) (m x y)) (lambda (p q) p)) => ((lambda (p q) p) x y) => x ; cdrの定義 (define (c…

2.1.3 What is meant by data?

http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-14.html#%_sec_2.1.3この節を始めて読んだときは、かる〜く、ていうか、思いっきりカルチャーショックを受けた。 だって、cons, car, cdrがこんなんで定義できんだぜ。 (define (cons x y) (define (d…

問題2.3

長方形のデータ構造。複数のやり方があるんだろうけど、とりあえず一番簡単な幅と高さを表す二つのベクタで定義。 ; 線分の長さを求めるお助け関数 (define (length line) (let ((start (start-segment line)) (end (end-segment line))) (let ((x1 (x-point…

問題2.2

線分のデータ構造。特に考える必要なし。 (define (make-segment start end) (cons start end)) (define (start-segment line) (car line)) (define (end-segment line) (cdr line)) (define (make-point x y) (cons x y)) (define (x-point point) (car poi…

Twitter

ふと、会社に行って、Twitterにアクセスしたらどうなるんだろう?とやってみたら、予想通りの結果。んでも、『iPhoneでやるから意味ないし、キータッチの速度を考えたらキーボードの方が早いんだから、開けてくれればいいのに』と思ったけど、いちおう、会社…

TE波とTM波

恥ずかしながら、両者の違いをほとんど知らずに生きてきた。 今、仕事で数値解析的な電磁界に関わっているのだけど、その中でも適当に流してた。 一応、今回理解したつもりになったので、残しておく。まず、電磁波は3次元座標系で考えるものだけど、ここで、…

問題2.1

(define (make-rat2 n d) (let ((g (gcd (abs n) (abs d)))) (cond ((or (and (< n 0) (< d 0)) (and (>= n 0) (< d 0))) (cons (/ (* -1 n) g) (/ (* -1 d) g))) (else (cons (/ n g) (/ d g)))))) ま、何も考えずに言われたことをそのままインプリしたって…

2章突入

第1章は手続きによる抽象化法を習った(らしい)。今度は、単純なデータを組み合わせて、複雑なデータ構造を構築して、現実の問題に対処しましょう、と言うところを学ぶようだ(知ってるくせに)。 しかし、Schemeの場合、手続きもファーストクラスであるため、…

問題1.44

(define (smooth f) (lambda (x) (average3 (f (- x dx)) (f x) (f (+ x dx))))) (define (n-fold-smooth f n) (repeated (smooth f) n)) ここらで飽きちゃいました。問題1.45, 46はスキップします。

問題1.43

(define (repeated f n) (define (iter func count) (if (= count n) func (iter (compose func func) (+ count 1)))) (iter f 1))

問題1.42

(define (compose f g) (lambda (x) (f (g x))))

問題1.41

(define (double f) (lambda (x) (f (f x)))) (((double (double double)) inc) 5) (double double)で手続きを4回実行する手続きになるのだけど、それにdoubleを作用させることで、8回適用させることになると思って、実行したらちょっとびっくり。16回適用す…

問題1.40

(define (cubic a b c) (lambda (x) (+ (* x x x) (* (* x x) a) (* x b) c))) ていうか、λの中が汚すぎw

9月『技術ひろば.net』に参加してきました。

http://hiroba-tech.net/tabid/70/Default.aspx会場は、新宿のマイクロソフト。この前のアジャイルのときにも思ったけど、こういうところにオフィスがあるのはうらやましい。 ぼくの場合、 鉄道大好き 高いところ大好き な人間なので、新宿の高層ビル街と言…

アジャイルチームワーキンググループ#2

と言う会合に参加してきた。 参加者は15人。簡単な自己紹介後に、『イイチームとは何か?』と言うテーマで議論した。 とりあえず、ぼくが印象に残ったこと。 チーム員が向上心を持っていること チーム員が自発的に動けること 見捨てない/あきらめない どこに…

問題1.39

昨日の続きで一気にやっちゃえば良かった。 (define (tan-cf x k) (define (square x) (* x x)) (define (d i) (- (* 2 i) 1)) (define (n i) (if (= i 1) x (- (square x)))) (cont-fact n d k))

テストケースのカバレッジ

お隣のチームがカバレッジの話で盛り上がってたようなのだが、カバレッジってどこまで有効な指標なのだろうか?ぼくのイメージでは、 コードが網羅的に記述されている。 全ての組み合わせが網羅されている。 関数が状態を持たない。 と言う場合には、カバレ…

問題1.38

ネイピア数を求める問題。 Diの漸化式が違うだけ。 (define (d i) (if (= (remainder i 3) 2) (/ (* (+ i 1) 2) 3) 1)) この問題を解いてるときに、前の問題の答えが全く間違っていたことが判明。 黄金比はNi, Diが常に1と非常に特殊なケースなので、バグが…

問題1.37

反復版 (define (cont-fact n d k) (define (iter kai n d count) (cond ((= count 0) kai) (else (iter (/ (n count) (+ (d count) kai)) n d (- count 1))))) (iter 0 n d k)) (最初に書いたコードは間違ってました。黄金比の場合、Diが常に1なので、気づ…

問題1.36

○○シミュレータでよく使う手です。でも、英語で"damping"と言うのに対して、日本語で『緩和法』と言うのは、少し違和感がある気がする。ていうか、緩和と言う言葉を乱用しすぎてるのかもしれんが。とりあえず、2.0を初期値にした場合 Normal版: 34回で収束 …