アマゾン・アフィリエイトの売り上げを一時的にだが数倍にする裏技
ミネラルウォーターの謎

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

060606_043633

 このブログでも何度か書いたことがあるが、ソフトウェアを書くのに高度な数学が必要なケースはマレで、ほとんどの場合は中学生程度の数学で十分である。ただし、中学生時代の数学を「公式の丸暗記」でしのいで来たような人ではなく、「難しい応用問題をエレガントに解くのが楽くてしょうがなかった」ような人が向いているというのが私の持論だ。

 例として、以下の二つの数学の問題を見て欲しい。

例題1.時計の長針と短針は、12時にちょうどピッタリと重なります。次にピッタリと重なるのは何時でしょう。

例題2.サイコロを2個、順番に投げることにします。1つ目のサイコロの目の方が二つ目のサイコロの目より大きい確率を求めてください。

 どちらも、中学生の数学を使って解ける問題ではある。例題1は方程式を使って解くことができるし、例題2は順列組み合わせの考えを適用すれば解くことはできる。しかし、それで満足してはいけない。

 プログラミングにしろ数学の計算にしろ、複雑になればなるほど「うっかりミス」は生じやすい。となれば、出来るだけミスの生じにくい、直感的でエレガントな解き方を見つけるべきなのである。極力バグを減らす。極力計算ミスをなくす。全く同じことである。その意味でも、「人間にミスはつきもの」という前提のもとで、「いかにミスが生じにくいような解き方・プログラムの書き方をするか」を常に真剣に考えるクセを身に着けておくことは大切である。

 ちなみに、ここまで読んで、「あれ、上の問題のエレガントな解法は教えてくれないのかな?」と思った人がいるとは思うが、あえて今日は答えは書かないでおくのでぜひとも自分で考えてみて欲しい。十分にエレガントな解き方にいたることが出来れば、計算は暗算でできるはずだ。別の言い方をすれば、どちらの問題も、紙と鉛筆を使わずに頭の中だけで、それも中学生程度の数学だけを利用して解けるのだ。

Comments

Naotake

試行錯誤を恐れない姿勢と、常にWhyを考える思考のスタイルは
大事にしていきたい、子供に伝えていきたい事ですね。
自分が父親にそう教えられたように、物事の背景となりたち、
「なぜそうなるのか」を考える事が最近のテーマです。
コメント欄に回答例を書くのは無粋なのかな…

kuro

数学より算数のほうが難しい。という典型的なやつですね。
この手の図形で考えるとアイディアがわいてくる問題は大好きです。
#例題はちょっと簡単過ぎるかもしれませんが・・・

しん

楽しく問題を解かせて頂きました。

トラックバックを打たせてもらったのですが、
トラックバックの概要入れ忘れて打っておかしなトラックバックうってしまいました…
堪忍してください。

つ

出題者の想定した回答で満足してはいけない、という意図が伝わっていないようです…。
例えば、サイコロは正六面体であるという思い込み。
正四面体と正六面体のサイコロを順不同で投げたときに、1つ目のサイコロの目の方が二つ目のサイコロの目より大きい確率を考えてみると、意外な発見があったりします。
「1~Xまでの数字が書かれた正X面体と1~Yまでの数字が書かれた正Y面体(X≧Y)のサイコロを順不同で投げたときに、1つ目のサイコロの目の方が二つ目のサイコロの目より大きい確率」を紙と鉛筆を使わずに頭の中だけで解いて、最後にX=Y=6を代入してみせるというのはいかがでしょう?

satoshi

 いかにも「つ」さんらしいコメントですね。「私は正24面体のサイコロ二つでも同じ方法で解けますか?」という拡張質問までは用意していましたが、異なる面の数のサイコロのことは考えていませんでしたね。こんな風に自分で問題を考える能力は、とても大切ですよね。与えられた問題を解くことだけをトレーニングする今の日本の受験勉強のシステムでは、そんな人が育つのかが疑問ですが。

つ

X≧Yの場合、任意の正Y面体の目に対して、正X面体の目が一致する確率は1/Xなので、一致しない確率は(X-1)/X。
順不同で投げた場合、1つ目が2つ目より大きい確率と小さい確率は同じなので、先に求めた確率を半分にして(X-1)/2X。
X=Y=6の場合は、5/12。

なんと、小さい方が何面体かは、答えには影響しないんです!
これを言いたくて、蛇足ながら解答例を載せてしまいました。

hana

異なる面数なんて考えもしませんでしたが、「つ」さんと同じような考え方で出した答えが15/36。あれ?答えが違う!?約分してなかった...。

Verify your Comment

Previewing your Comment

This is only a preview. Your comment has not yet been posted.

Working...
Your comment could not be posted. Error type:
Your comment has been posted. Post another comment

The letters and numbers you entered did not match the image. Please try again.

As a final step before posting your comment, enter the letters and numbers you see in the image below. This prevents automated programs from posting comments.

Having trouble reading this image? View an alternate.

Working...

Post a comment

Your Information

(Name is required. Email address will not be displayed with the comment.)