【超難題】プログラマのための論理パズル / Dennis E. Shasha
09/03/27
本日ご紹介するのは、Dennis E. Shasha 著 吉平健治 訳「プログラマのための論理パズル」です。
この本は、レバレッジサロンをともに設立したH・Millsさんが企画した書籍です。
僕も本好きプログラマーという事で、出版前のレビューに参加させていただきました。
H・Millsさん出版おめでとうございます!
概要
・プログラマとしての力を伸ばしたい人
・ソフトウェア開発職でより良いポジションに就きたいと考えている人
・優れたプログラマを採用したいと考えている企業とその採用担当者
本書は上記のような人に向けた論理パズル集である。
著者
Dennis E. Shasha氏は、ニューヨーク大学クーラン数理科学研究所コンピュータサイエンス学科で教授職を務める。
本書の他にパズル関連の書籍を5冊、コンピュータサイエンティストにまつわる逸話をまとめた伝記、データベースチューニング、生物学におけるパターン認識
、時系列データ分析に関する著書を出版。
ポイント
・考える力を鍛えるのは難しい
思考力を鍛えるには王道はない。能力を身につけるためには、トレーニングを繰り返すしかない。
頭で理解するだけでなく、訓練を通して身につける必要がある。
・パズルは思考力のトレーニングに最適
ソフトウェア開発で共通しているのは、「明確な設計方法や答はすぐには導けない、もしくは存在しない」ということだ。
しかしそのような問題に何らかの道筋や回答を見つけなければならない。
そのためには公式を覚えて当てはめるのではなく、頭を使う必要がある。
頭を使う難しいパズルは、こういった問題を解くためのトレーニングとして最適なものである。
・ソフトウェア開発とパズル
1.「機能・要件定義」では提示された問題を深く観察・理解し、開発すべき目的を明確にしなくてはならない。これはパズルの題意を理解することに相当する。
2.「設計」では、パズルを解く手法そのものに相当する。
3.「コーディング」では、アルゴリズムのひらめきやコードレベルでの例外処理を網羅するといったことがパズルでの制約条件を正確に見抜く力に似ている。
4.「テストケース作成」では、解法の仮説を立てて仮の解答を導く力がテストケースのカバレッジに生かされる。
5.「デバッグ」における、限られた情報から隠れた本質を導きだす作業は、まさにパズルにおけるケース分析に等しいといえる。
サンプル問題
インフルエンザの予防接種を受ければ100%予防できる。
しかし受けずにいるとインフルエンザが蔓延した場合に10%の確率で死亡する。
インフルエンザの予防接種を受けると5%の確率で死亡してしまうリスクもある。
政府機関が60%の国民に予防接種を受けさせた場合、総人口に対してインフルエンザによって死亡するリスクは何%か?
この問題は本書の中ではかなり簡単な方です、解答は本書で^^
感想
とにかく難題のオンパレード!
レビューをしたとはいえ、自力で解けた問題はわずかでした、、、
特に難しい問題はこんなアイコンがついています(笑)
自分の思考力を試したい方、難題こそ燃えるストイックな方、Google・Microsoftに入社したい方!?、是非本書を手にとってみて下さい。
H・Millsさん、このようなレビューの機会を下さりありがとうございます。
非常にエキサイティングで貴重な経験でした。
まだ解けていない問題はこれからじっくり取り組みます^^;
Comment
トラックバックはありません。
はじめまして
古い記事ですがレスさせていただきます。
amazonなどのレビューを見る限り この本は好評のようです。
そこで、本の情報を探していたらたどり着きました。(ところでマインドマップは僕も興味があります!公式ブックも持ってます。)
さっそく このブログに掲載されている問題を考えてみたのですが
予防接種による死亡というのは インフルエンザウィルスのワクチンに含まれる弱い毒のインフルエンザウィルスによる死亡ということで
これも、やはりインフルエンザによる死亡ということでいいのでしょうか?
AKIRAさんコメントありがとうございます。
返事が遅くなって申し訳ありません。
質問の意味がうまく把握できないので、
よろしければメールをいただければと思います。
出版に関わった他のメンバーにも意見を聞くことができるかもしれません。
メールを送りたかったのですが送り方がわからないので
こちらから、また書かせていただきます。あとお返事遅れてすいません・・・
ええっと、
最初 予防接種での死亡は インフルエンザ自体による死亡ではなく、ただの薬の副作用だと思ったのです。ですからインフルエンザによって死亡するリスクではないのかな、と思いました。
しかし、
「予防接種に使うものはワクチンで、ワクチンとは弱毒性の病原菌を利用したものが結構あるのではないか?特にインフルエンザは正にそれだ。」と思い、副作用による死亡とは、感染による死亡として扱わなければならないという考えに至りました。
もっと簡単にいえば、(ひょっとしたらこの質問の答えも自分で考えなければならないのかもしれないけれど)
問題で最終的に聞いている「死亡するリスク」に予防接種で「死亡するリスク」は含まれるか、否かということです。
よろしくお願いします。
AKIRAさん
説明不足で申し訳ありませんでした。
ページ上部にメルアドを記載しております。
さて、質問についてですが、予防接種での死亡は単純にワクチンの副作用として考えていただいて結構です。
最終的な問いの「死亡するリスク」とは”インフルエンザが蔓延して感染し死亡するリスク”+”予防接種による副作用での死亡のリスク”と考えて下さい。
どうぞよろしくお願いします
見落としてました!!
質問の返事、ありがとうございます。
早速、考えてみます。
更新楽しみにしてますね!