Home
パズル問題自動生成時代
ナンプレ
はじめに
プログラムで問題を解く
プログラムで問題を自動生成
- 手作りの方法
- 破綻の判定が欲しい
- 序盤の数字のばらまき方
- 多重解にならないために
- 中盤は統計的にごまかそう
- 終盤へのつなぎ方
- 良い問題を目指して
- 終盤は問題の選択
- 見かけが大切
- 隠れた工夫
- 面白さの実現について
- 自動生成プログラムのススメ
乱数の乱用だけでは限界
将来展望
- もしミリ秒で問題生成できたら
- 誰でも簡単に問題が作れたら
- 自動生成も多種多様
- 解き方を見て問題を提供
- パズル作家風の問題生成
- 自動生成プログラムの自動生成
- 多種パズルに適用可能な汎用的アルゴリズム
- いつごろ実現できるか (1)
- オープンソースでの公開
- パズル作家は何をすべきか
パズル問題自動生成時代 -- ナンプレ -- プログラムで問題を解く
頭の良過ぎるプログラムの末路
プログラムは腕が良過ぎる
ナンプレの問題をプログラムに解かせると、難問でも着々と解いてしまう。ちゃんとしたプログラムなら、多重解や、解なしも楽勝で見つける。
これは、問題の正当性チェックには非常によい。問題が正しいかどうかを人間がチェックしていては、とんでもなく手間がかかる。それに引き換え、プログラムは問題データを突っこめば、すぐに評価してくれる。
人間は、正当性のチェックを終えた問題についてだけ、面白さなど人間にとって重要な点だけをチェックすればよい。これで、パズル検査人の労力は激減する。
プログラムをあまり工夫しなくても、基本的なルールチェックを用意し、それで駄目だったら虱潰しという方法でも十分に使えるソフトになってしまう。
要するに、ナンプレの問題を解くのは、コンピュータにとってはやさし過ぎる。解けない間は、プログラムの改良をして、何とか解けるようにしようと思う。虱潰しや再帰に頼らずに人間が解ける問題は、プログラムでもそのようにしたいので最初は努力もしようが、どんないい加減な作りでも実用になるプログラムが出来てしまうので、結局努力が不要なことが分かる。
ナンプレは、パズルへの入門としてお手頃で、解くプログラムを作るにもお手頃だ。それは非常に良いことであるが、結局、簡単過ぎて詰まらなくなってしまうのだ。
プログラムは高速過ぎる
ナンプレの問題をプログラムに解かせると、どのくらいの時間がかかると思うか?
普通に、CやJavaでプログラムを組めば、今どきのコンピュータなら、 100問を1秒で解き終えるのは当たり前だろう。つまり、新書版で売られている問題集1冊を1秒以内で楽々解いてしまう。プログラムにとってやさしい問題だったら、1問を1ミリ秒(1/1000秒)以内で解いてしまうだろう。
このくらい早く解けてしまうと、解く時間そのものよりも、問題データを読み込む時間、解いた結果を表示したり、ファイルに書き込む時間、つまり入出力時間が馬鹿にならなくなる。
さて、このくらい短時間で解けるようになると、楽しくなるどころか、逆につまらなくなる。1問を1秒以内で解けるようになってくると、もうそこから先は、いくら早くなっても、あまり恩恵がないのである。
こうして、プログラムで早く解くという挑戦がつまらなくなってくる。もう、解くのはどうでも良いから、もっと違うことをしなければ。

