プロジェクトオイラー
http://projecteuler.net/index.php?section=problems&id=96
最後に残しておいた問題、それがこのナンプレとか数独とか呼ばれるパズルを50問解く問題。元々これを解くPythonのプログラムは作ってあったのだが、そのためにかえってどうもやる気が起きなくて、ついつい最後まで残してしまった。
インターフェイスを作って解いてみると、2問解けない問題が出てきてしまった。そこで、マスにあてはまる数字に2つ候補があればどちらかを入れて矛盾が出ないかを見る、というアルゴリズムを組み込んでみた。そうしたところ残りの2問も解けた。
全問解くのに5ヶ月かかった。最初はもちろん全部解こうなんて全く思っていなかった。残り20問になっても全く手がつかない問題が残っていた。10問を切るとさすがに全部解かなければと思った。
プロジェクトオイラーを解く上で大切なこと。数学の素養はそんなに必要無いのではないか。最低でも高1レベルはほしいが、わからないことは本やネットで調べればいい。プログラミングの力も、問題を解いていけば自然とつく。それよりも、アルゴリズムを粘り強く考える力が必要なのではないか。アルゴリズムが思いつかなくても、考えていればそのうち思いつくだろうと思って、あれこれ考える。そういう姿勢が必要なのでは、という気がする。