沖縄読書会

今日も某所にて実施。
思ったのはやはり SICP って高等数学をきちんとヤッてる現役だと解に至るスピードがぜんぜん違うな、という事。
例えば問題 3.32 だと「これはべき集合の定義そのまんまです」という事で簡単に解に至っています。自分の以前の解というかエントリを見るに試行錯誤の上に以下なソレがでっち上がっている。

(define (subsets s)
 (if (null? s)
     (list '())
     (let ((rest (subsets (cdr s))))
       (append rest (map
                     (lambda (x) (cons (car s) (map (lambda (x) x) x)))
                     rest))))
 )

なぜに

(map (lambda (x) x) x)

なんだと小一時間。。
この問題、今日じつと出力なリストと問題に出てる手続きをニラんでて気がついたんですが、最初に出てくるのは

'(())

なリスト。次に '(3) なリストの car 要素とこのリストの要素を cons したものが append されて

'(() (3))

となる。次に '(2 3) なリストの car 要素とこのリストの要素を cons したものが append されて

'(() (3) (2) (2 3))

となって最後に '(1 2 3) なリストの car 要素とこのリストの要素を cons したものが append されて

'(() (3) (2) (2 3) (1) (1 3) (1 2) (1 2 3))

が出力されるのが分かる。ある意味今回は一発で解に至ってはいますが、それでも_べき集合の定義_と看破したヒトとは解に至るスピードは全然違う。いやはや的です。

問題 2.37

今日、非常に興味深かったのはマトリクス演算のこの問題でした。全部解けてない、との事にて sw@mac の中の人はうんうんウナッてたんですが、解が出てきた後にマトリクスが 3D な演算でどう使うか云々な話を聞かせてもらって、これは再度トライすべきかな、と。
てか、そもそも高等数学な部分を完全スルーで SICP にトライするのは相当無茶な事なんだな、とゆー事がよくよく分かりました。
この問題、過去ログ見ると途中で力尽きてますが、マトリクスな演算が必要な実装のナニを含め、色々確認してみる方向で考えてます。楽しみ。

とりあえず

今日はへろへろなので力尽きる予定ス。