Pythonとかいろいろのこと

angelaのプログラミング勉強ブログ

数学パズル

Pythonの勉強を再開という事で、Checkioをやるかなも思ったけど、「プログラマ脳を鍛える数学パズル」という本を買ってみた。もともとはCodeIQで出題された問題らしく、それをまとめて70問掲載した本らしい。とりあえず、いろいろな書き方を学習するのに、写経以外に調べたり考えたりする要素が必要なので、これをやってみることに。この本は、ほとんどのコードがRubyで書かれているので、RubyPythonに直す感じ。

と、最初の数問は余裕だろうと思っていましたが・・・結構難しい。最初の問題は、数字の回文だったけど、RubyのreverseをPythonでするにはどうすればいいのだ・・・と改めて基本的なとこを知らないなと思いました。

調べた結果、数字を一旦文字列にstrで変換して、以下のようにすれば逆のならびになることを確認。2進数はこれでうまくいったけど、8進数がうまくいかない。


数字の逆並び

8進数はhex(number)で表示されるけど、どうも本の解答と答えが違う。hex(585)とすると'0x249'となる。0xを取り除いても、249が8進数の585ではなくて1111のはずなんだけど、ここでむーとなって、いろいろ調べたけどあまりよくわからないので次の問題に行く事にした(弱)。今度Pythonに詳しい友達に会うから、聞いてみよう。

翌日談:すっごいかっこ悪くて、本をちゃんと見てなかったため、16進数のhexを8進数と勘違いしていて、8進数はoct(585)で1111になることが分かりました。あーすっきりした!