パズルは楽しい
副題は「数学パズルで鍛えるアルゴリズム的思考」
最近、本を読むのが億劫になっているので、Amazon の評を読むことにしている。 そのうちの一つに、本書のよくない点として、「PEP8に従っておらず、Pythonらしいコードではない。」 という指摘があった。PEP8 とはなんだろう。どうやら Python のコーディング規約らしい。 https://pep8-ja.readthedocs.io/ja/latest/ せっかくコーディング規約があるのだから、これを守ることにしよう。
17 章アナグラム狂のところでは、p.188 でこう述べられている:
まとめると、アナグラムパズルを解く効率的戦略は、アルファベットの各文字に一意な素数を割り当て、 各単語のハッシュをその積で求めることです。このハッシュ値に基づいて単語をソートすれば、 ソートした出力では全アナグラムがグループ分けされます。
後のページには、この戦略に基づくコードが記載されている。ところが、
素数のところは数値リテラルとしてコーディングされている。例:
... = {'a':2, 'b':3, 'c':5, ..., 'z':101}
このようにコーディングするのは、打ち間違いもあって危険である。
素数のところをプログラムによって出したいということを、プログラマであれば当然考えるだろう。
ところが私は Python プログラムが書けない。恥ずかしい。
p.120 コードの 1. が EMPTYPIECE = 1 となっているが、正しくは EMPTYPIECE = -1 である。 本文では「-1 が yard 中の空のマス目を表します(1行目)」となっていて、これは正しい。 仮にこの EMPTYPIECE = 1 のままプログラミングを進めると、 p.122 で得られる結果の表示が、 B のところだけスペースになってしまう。 この誤植は公開済かもしれないと思い、 https://www.oreilly.co.jp/books/9784873118512/ に行ってみたが、正誤表は見当たらない。
p.225 のグラフのノードで、F が二つあるのは誤り。Q の下にあるのは F ではなく、R である。 この正しい R は Q と X と連結されている。
書 名 | 問題解決の Python プログラミング |
著 者 | Srini Devadas |
訳 者 | 黒川 利明 |
発行日 | 2018 年 9 月 22 日 初版第1刷 |
発行所 | オライリー・ジャパン |
発売元 | オーム社 |
定 価 | 2800 円(税別) |
サイズ | A5 版 |
ISBN | 978-4-87311-851-2 |
その他 | 越谷市南部図書室で借りて読む |
NDC |
まりんきょ学問所 > コンピュータの部屋 > コンピュータの本 > Python > Srini Devadas:問題解決の Python プログラミング