エンジニアの知的生産術の1章では具体的な情報収集と、そこからのパターンの発見について解説した。この考え方の具体例としてちょうど良い数学の問題があるので紹介する。

問題

  • 100個のロッカーと100人の人がいる。ロッカーには1, 2, 3, …, 100と番号が振ってある
  • 1人目の人がロッカーを全部開ける
  • 2人目の人が2, 4, 6, … と2個おきにロッカーを閉める
  • 3人目の人が3, 6, 9, …と3個おきに、開いていたら閉め、閉まっていたら開く
  • 4人目以降も順次「N番目の人はN個置きに開閉」する
  • 100人目が100番のロッカーを開閉した後で、開いているロッカーはいくつか?

100個のロッカーそれぞれの開閉を書いて、開いているロッカーを数えればわかる。 しかしこのタスクは大きくて、大変なので、まずはもっと小さいタスクをして情報収集をする。

ロッカーを(適当に)10個だとしよう image 手順の通りに開け閉めして、最終的に開いているのは、ロッカー1, 4, 9の3つだ。

1, 4, 9, という並びを見て「ん?平方数か?」と気づく。(=パターンの発見)

「この作業をやった後で開いているロッカーは、平方数である」は一般的に言えるのかどうか。 これを証明しようとするなら「なぜ平方数のロッカーは開いているのか」を考えていくことになる。 単に答えの数値だけが必要なら100以下の平方数は10個だからそれを答えて終わらせるのも手。

「なぜ平方数のロッカーは開いているのか」に関して、考え終わった人が考えを一言で言うと「約数の個数が奇数個なのは平方数だけ」になる。 だが、この文章を丸暗記しても、別の問題が解けるようにはならない。 自分で考えなければ身につくことはない。 この問題を解く上で重要なのは「約数の個数が奇数個なのは平方数だけ」という知識ではなく、問題文を見てそこにたどり着くことができる「考え方」だからだ。