Home
パズル問題自動生成時代
ナンプレ
はじめに
プログラムで問題を解く
プログラムで問題を自動生成
- 手作りの方法
- 破綻の判定が欲しい
- 序盤の数字のばらまき方
- 多重解にならないために
- 中盤は統計的にごまかそう
- 終盤へのつなぎ方
- 良い問題を目指して
- 終盤は問題の選択
- 見かけが大切
- 隠れた工夫
- 面白さの実現について
- 自動生成プログラムのススメ
乱数の乱用だけでは限界
将来展望
- もしミリ秒で問題生成できたら
- 誰でも簡単に問題が作れたら
- 自動生成も多種多様
- 解き方を見て問題を提供
- パズル作家風の問題生成
- 自動生成プログラムの自動生成
- 多種パズルに適用可能な汎用的アルゴリズム
- いつごろ実現できるか (1)
- オープンソースでの公開
- パズル作家は何をすべきか
パズル問題自動生成時代 -- ナンプレ -- -- プログラムで問題を自動生成
乱数の乱用だけでは限界
白マスをどんどん抜く
対称形に数字を消す
美しい形の問題の方が良いだろうから、問題は対称なものを考えることにしよう。そうすると、数字がないマスも、対称形になっていなければならない。
つまり、点対称だったら、中心点に関して対称な2マスを同時に白マスにしなければならない。4点対称(90度の回転で重なる)だったら、対称になる4マスを同時に白マスにしなければならない。
こういう風に、対称性を保ちながら消して行けば、残った数字も対称に配置されているから、めでたしめでたしとなるはずだ。
では、思いっきり奇麗な形で消してみよう。
これで解いてみると、まだ解は1つであった。元々解が存在するのは分かっているので、多重解にならなくなるまで消せる訳だ。
17マス消しただけなので、この程度なら普通は問題なく解がユニークになる。
もっと消してみよう。
まだ、解はユニークだ。
これで、残っている数字が40個で、半分(41個)のマスを消すことができた。
これでも、まあ美しい形といえるが、非常に沢山の数字があるし、問題としても無茶苦茶やさしい。もっと消せないだろうか。
もうすこし頑張ってみたら、次の状態まで到達できた。
もちろん、解はユニークである。
数字は、32個残っている。かなり多いのであるが、これ以上対称に消して行くのは難しかった。とりあえず、私は諦めた。
この方法でも、もう少し工夫はできないのだろうか。
もっと数字を減らそう
ここまでは、極端に美しい形にしたが、美しい形にするのでなければ、全マスの中で、消しても解がユニークな場所を探しては消して行く方法がある。
この方法をくり返すと、まだ幾つか消せるだろう。美しい形にこだわり続けるのはやめて、点対称(2点対称)なもので消しても解がユニークになっている場所だけを探してみたら、次の図まで到達できた。
数字の数は26個であり、まずまずの数字の個数である。ちょっと不満が残るが、まあまあか。でも、形がつまらなくなった。何とか点対称は保っているものの、美とは言いがたくなってしまった。
しかし、26個の数字はちょっと多いので、もうちょっと少くしてみよう。
ということで、対称性を無視して、消しても解がユニークなマスを探しては試してみた。すると、次の状態になった。
数字が24個まで減った。24個は、ナンプレの問題で最も標準的な個数であり、それなりの問題といえる。
しかし、形は目茶苦茶だ。ここまで形を崩してやっと24個の問題しかできない。
欧米のナンプレの問題を見ると、こういう風に形が思いっきり崩れたものを見かけることがよくある。どうやって作ったのか書いていないので想像するしかないのだが、たぶん数字を抜く方法での自動生成ではないかと思う。
プログラムは簡単だろう。実行時間もあまりかからないから、でき上がった問題が気に入らなければ、再度作りなおせば良い。何度もやって、一定条件以上の問題ができたところで、問題として採用すればよい。
が、この汚さを考えると、この方法は捨てるしかないようだ。それに、白マスをどんどん抜いていくこの方法では、数字を少なくするのは絶対に難しそうだ。

