「コロンブスの卵」
発想と発見
新しい発想を得るためには人間が時間をかけてやり方を考えたり試行錯誤したりする必要があります。前回紹介した
プログラミングと発見
失敗から何かを発見したというエピソードはたくさんあります。もちろんただ失敗すれば良いというものではなく,
今回は,
数え上げによる答えの発見
算数の問題を解くときは,
- t+k=30
- 2t+4k=100
のような1次方程式を使うこともできます。数学の問題はこのように解析的に解くのが普通ですが,
つるかめ算を解くのにこういうプログラムを書く人は少ないと思いますが,
乱数で答えを発見
つるかめ算の場合は解の候補をすべて数え上げれば答えを発見できるはずですが,
まずこのようなデータを用意します。
* . . . . . . .
. * . . . . . .
. . * . . . . .
. . . * . . . .
. . . . * . . .
. . . . . * . .
. . . . . . * .
. . . . . . . *
2つの行をランダムに交換してみると,
* . . . . . . .
. * . . . . . .
. . . * . . . .
. . * . . . . .
. . . . * . . .
. . . . . * . .
. . . . . . * .
. . . . . . . *
これを何度も繰り返してよさげなものを残していくと,
. . * . . . . .
* . . . . . . .
. . . . . . * .
. . . . * . . .
. . . . . . . *
. * . . . . . .
. . . * . . . .
. . . . . * . .
人間は数え上げ操作が苦手ですから,