先日教養のコンピュータアルゴリズムを購入したばかりなのですが、さらに計算機学とPythonの本を購入しました。本はかさばって保管と処分に困るのでもう購入しまい、と思っていましたのに。
2ちゃんねるの書き込みをみて購入
再帰について数学的にきちんと証明したければこの本に載っている、と2ちゃんねるで紹介されていたこの本。
amazonでの書評でも評価されていたので購入。
200ページしかない薄い本なので通勤途中の電車の中で読んでいます。
3章の万能関数のあたりからわからなくなってしまいました。
2変数全域関数pairの定義
$${\rm pair}(x, y) = \left( \sum_{n=0}^{x+y} n \right) + x + 1$$
これがどうしてこうなのかという理由がわからないまま7章まで読んでいたのですけど、このpair関数がここまでに何度もでてくるのですよ。
と、いうことを書こうと思っていま40ページのpair関数の定義のところを見直して表3.1をみるとpair関数の意味がわかりました、、、
左下の1から始まって左上から右下に順番に自然数の並びになっていました。
ああ、ちゃんと全域関数になっていますね。
表にある矢印は何の意味だろなあと思っていました。
自然数が連続していくことを表していたのですね。
もう一度ここから読み直しですね。
あとよくわからなかったところは5章の原始帰納的関数の定義で、while文はだめでloop文ならよいという点ですが、15ページの最後にwhile文とloop文の違いが書いてありましたね。
while文は実行してみないと繰り返し回数がわからないけど、loop文は実行前に繰り返し回数がわかっている、という違いがあります。
ということでwhile文がないと限定反復プログラムになれてそれが原始帰納的関数であるということですかね。
それで原始帰納的関数はすべて計算可能関数なんだけど、計算可能関数がすべて原始帰納的関数というわけではないので、while文がある計算可能関数があるということですね。
まだ途中まで1回読んだだけの理解不足の私のつぶやきですので間違っているかもしれません。
Python Cookbook第3版を購入
Python(8)線形再帰を非再帰に変換する方法でPythonクックブック - Google ブックスを見つけて日本語版を買おうとしたのですけど、Python2.4で書かれたものということでした。
調べてみるとPython3.3対応の第3版がでていましたが日本語版はまだでした。
既に日本語版がでている第2版の原書の発売日は2005年3月。
第2版の日本語版がこれなのですが発売日が2007年6月になっています。
原書の発売日から2年3ヶ月かかっています。
ということは日本語版の発売は、されたとしても2015年8月ぐらいになると予想しました。
そこまでは待っていられないので第3版英語版を購入しました。
Pythonクックブック - Google ブックスにある第2版日本語版の「4.6 入れ子になったシーケンスの平滑化」は第3版英語版では「4.14. Flattening a Nested Sequence」にありました。
Python3.3から導入されたyiled from式で書かれた例がSolutionに載っています。(What’s New In Python 3.3 — Python 3.3.3 ドキュメント)
第2版日本語版にあるようなyield from式を使わない方法はDiscussionで紹介されていました。
第2版にあるような非再帰版の例は載っていませんでした。
こちらは600ページ超ある分厚い本なので簡単に持ち歩くわけにもいかずまだ読み始めていません。
購入してからKindle版を買ったほうが安くて持ち歩けてよかったかも、と後悔したのですが、iPod touchしかもっていないのでそれはそれで小さくて読みにくいのですよね。
パソコンの画面からも読めるとよいのですが、いまのところAmazon.co.jpから購入したものはできないそうです。
0 件のコメント:
コメントを投稿