タグ

2007年1月8日のブックマーク (3件)

  • できるかぎりエレガントな解法を見つけて「うっかりミス」を減らす

    このブログでも何度か書いたことがあるが、ソフトウェアを書くのに高度な数学が必要なケースはマレで、ほとんどの場合は中学生程度の数学で十分である。ただし、中学生時代の数学を「公式の丸暗記」でしのいで来たような人ではなく、「難しい応用問題をエレガントに解くのが楽くてしょうがなかった」ような人が向いているというのが私の持論だ。 例として、以下の二つの数学の問題を見て欲しい。 例題1.時計の長針と短針は、12時にちょうどピッタリと重なります。次にピッタリと重なるのは何時でしょう。 例題2.サイコロを2個、順番に投げることにします。1つ目のサイコロの目の方が二つ目のサイコロの目より大きい確率を求めてください。 どちらも、中学生の数学を使って解ける問題ではある。例題1は方程式を使って解くことができるし、例題2は順列組み合わせの考えを適用すれば解くことはできる。しかし、それで満足してはいけない。 プログラ

  • ビル・ゲイツの面接試験-クイズ編

    先日書いた、「ビル・ゲイツの面接試験-私の場合」がとても好評だったので、調子に乗ってもう一つ披露しよう。今回は問題のみを書くので、頭の体操と思って楽しんでいただきたい。 [第一問]ここに8個の金貨があり、そのうち一つだけがとてもよく出来た偽造品で、他の金貨よりわずかに軽いことだけが分かっています。天秤を使ってどの偽造品を見つけ出したいのですが、天秤を一回使用するたびにお金がかかるので、出来るだけ最小の手数で偽造品を見つける必要があります。どうしたら良いでしょう。 [第二問]上の問題と同じ(他の金貨よりわずかに軽い偽造品が一つだけ混ざっている)条件で4回まで天秤を使っていいとすると、最大で幾つまでの金貨の中から偽造品を見つけ出すことが出来るでしょう。 [第三問]今度は少し条件を変えて、偽造品は「物と少し重さが違う」ことは分かっているのですが、重いのか軽いのかは不明だとします。この場合、3回

  • Life is beautiful: ビルゲイツの面接試験―ドラゴン桜編

    今年のしめくくりのエントリーは、久しぶりの頭の体操。今回は、mixiの「幾何学おもちゃ」コミュニティーから仕入れた図形問題。先週の「ドラゴン桜」で紹介された問題だそうだ。 問題はいたってシンプル。平面上に大きさの異なる二つの円と直線が左の図ような関係に配置されているときに、二つの円と直線のいずれにも接する円はいくつかけるか、という問題である。 「ソフトウェア・エンジニアにとってもっとも大切なことは知識ではなく考える力」と言いつづけている私としては、この手の「中学生にも解ける問題でありながら、しっかりと問題を把握した上で論理的に考えなければ正しい答えにはたどりつけない問題」は大歓迎。「ビルゲイツの面接問題シリーズ」に取り上げる価値のある良問だ。 ソフトウェアのバグの原因は色々とあるが、その一つが、設計者が想定していなかった状況でプログラムが実行されてしまうこと。しかし、後になって考えてみれば