『独学プログラマー』を読んでみた(賞金稼ぎへの道3冊目「FizzBuzz問題をやっつける」)
すぐれたプログラマーは、金銭的な報酬や人々から賞賛を浴びる目的で、コードを書くのではない。単純にプログラミングを楽しむために、コードを書くんだ。
Linus Torvalds(リーナス・トーバルズ)
不屈の努力と熱情は、何歳でも奇跡を起こす。
こんにちは、あおいもみあげこと、あおもみです。
少しかっこつけて本の中で紹介されていた名言から初めてみました。
わたしもKaggleをやるのは人々から賞賛を浴びる目的ではないので、ものすごく共感できました。ただただmoney...(´・ω・`)
そう不屈の努力と熱情があれば、おじいちゃんになってもKaggleができる..(´・ω・`)
気を取り直して今回は、まず、Kaggleをやるにあたって、少しPythonの基本的なところを勉強したいと思ったため、コーリー・アルソフ氏の『独学プログラマー』を読んだという話です。
記載がわかりやすく、さらっと読めましたが、私のような初心者で独学で学んでいるものにとっては、とても参考になる本だと思いました。
この本の中で、著者はプログラミングを学ぶということは繰り返し作業から生涯自由になれるということを言っております。
また、スタック・オバーフロー(プログラマー向け質問サイト)の共同創業者であるJeff Atwood(ジェフ・アトウッド)氏が作ったというFizzBuzz問題についての記載があったため、FizzBuzz問題に挑戦してみました。プログラミングをしている人にはきっと初歩的ななじみのある問題だとは思うのですが、もちろん初心者の私は聞いたこともなかったし、最初これを聞いたとき簡単そうだけども、どうやって書いたらいいのかわかりませんでした。
FizzBuzz問題とは、面接で候補者を選別するのに使われるプログラミングテストですが、ルールは次の通りです。
1から100までの数字を出力するプログラムを書きなさい。ただし、3の倍数のときは数字の代わりにFizzと出力し、5の倍数のときは数字の代わりにBuzzと出力する。そして、3と5の倍数のときは、FizzBuzzと出力すること。
詳細は、ジェフ・アトウッド氏のブログ記事の日本語訳のサイトがありましたので、こちらを見ていただいた方が早いですね。
まぁそりゃあ、今でこそ、この問題が知れ渡っているけど、当時面接試験で急にぱっと言われてかけるかと言われたら、どうでしょうかね。
てなわけで、いつ問題を出されてもいいように本ブログに書いたコードを貼り付けておこうと思うのですが、貼り付け方がわからないということで、そっちを調べることから始まりでした。みんなどうやっているんだろう?
Jupyter notebookを実行結果とともに、ブログに貼り付けたかったので、下記の記事を参考に、Jupter notebookの拡張機能であるextensionsをインストールしてgist-itを使えるようにすると、さらにPersonal access tokensの設定を行うことにより、下の画像のようにボタンがでてきたため、ワンクリックですぐにgistへ上げて、ブログ記事に貼り付けすることができるようになったので、とても便利でした。私は今はこれで十分と感じていますが、もっといい方法があれば教えて頂ければ幸いです。
拡張機能のconfig画面からtokensを入力して、普通、認証するだろうなあと思い認証ボタンのようなものを探しましたが、認証ボタンのようなものはなかったので、入力しただけで、そのまま進みました。実際使えているので、入力するだけでいいと思われます。
FizzBuzzに挑戦し、撃沈し、答えを見ながら写経した結果がこちら↓
モチベーションを上げようと思って頭がおかしくなった結果がこちら↓
今回の感想: Pythonってすごく簡単にかけるのでとても魅力的ですね。(小並感)
おまけ
横山光輝さんの『三国志』の名場面を、Pythonで再現してみた。この本は全部で60巻もあってすごいボリュームがありましたが、子どもの頃何回読んだかわからないくらい読んでいます。何か困ったことがあれば、出てくる登場人物がすぐにみんな「むむむ」といいますが、この場面はその中でも馬超が「むむむ」といった瞬間、特にするどいつっこみを受ける場面である。てかこのえらそうな人の方誰だったか?
今回のFizzBuzz問題のケース↓
ジェフ・アトウッド氏『職に応募してくるプログラマと名乗る人間が最も簡単なプログラムさえ書けないという事実には驚き、困惑している。』
あおもみ『むむむ』