Home
パズル問題自動生成時代
ナンプレ
はじめに
プログラムで問題を解く
プログラムで問題を自動生成
- 手作りの方法
- 破綻の判定が欲しい
- 序盤の数字のばらまき方
- 多重解にならないために
- 中盤は統計的にごまかそう
- 終盤へのつなぎ方
- 良い問題を目指して
- 終盤は問題の選択
- 見かけが大切
- 隠れた工夫
- 面白さの実現について
- 自動生成プログラムのススメ
乱数の乱用だけでは限界
将来展望
- もしミリ秒で問題生成できたら
- 誰でも簡単に問題が作れたら
- 自動生成も多種多様
- 解き方を見て問題を提供
- パズル作家風の問題生成
- 自動生成プログラムの自動生成
- 多種パズルに適用可能な汎用的アルゴリズム
- いつごろ実現できるか (1)
- オープンソースでの公開
- パズル作家は何をすべきか
パズル問題自動生成時代 -- ナンプレ -- プログラムで問題を解く
人間の解き方
解法教室
インターネット上でよく見かけるのが、解くためのテクニックのページである。
たとえば、 『ナンバープレイス 解法教室』なんてのがある。
こういうのを読めば、自分で解き方を見つけなくても、 解き方が解説されているので、手っ取り早く、あるいはずる賢く横着をしながら 上達できるので、ぜひ利用されたい。
ここでは、以下のようにレベル分けがされている。
- 基礎の基礎
- 8つ決まれば、残りは残りもの
- 基礎常識
- 「平行線」の常識
- 「水平線垂直線」の常識
- 「直交平行線」の常識
- 一般常識
- 「空き直線」の常識
- 「別方向から決定」の常識
- 難解常識
- 「2重線」の常識
- 「残り物」の常識
- 「矛盾」の常識
ここでは大雑把な分類しかしていないが、もっと細かいテクニックを 延々と紹介しているサイトも存在する。
手始め
多い数字に注目
ナンプレでは、1から9のどの数字に注目するかを最初に考える。
たくさん出ている数字ほど制約条件が厳しくなっているはずで、残りも決めやすいはず、という考え方がある。
人間の場合、一般には1から順に調べるのかもしれない。それよりも、できるだけ多く見えている数字から攻めるべきだろう。
パズル作家はひねくれ者が多く、1から調べると解きにくい問題を作る傾向がある。では、9から調べると良いかというと、それも避けようとする。しかし、多く存在する数字から解くようにすれば、作家のひねくれ根性に左右されなくなる。
タテとヨコ
一番頻繁に利用するテクニックは、特定の数字Nに注目し、 数字Nが置かれているマスと同じタテまたはヨコの列には 数字Nが置けないことを利用するものだ。
この場合には、右上のブロックに注目すると、 既存の1について、右上ブロックに影響を与える方向に線を引いて、 1が入れられないマスを示した。
すると、もう黄色の1マスにしか1を入れられない。 だから、黄色マスは1に確定する。
人間は、このように、
- タテ
- ヨコ
- ブロック
のような取扱いやすいまとまりを意識しながら解くことが多い。 こういうやり方は、人間の直感によくなじむようである。
完全確定マス
ナンプレの場合、各マスには1〜9のいずれかを入れるのだが、 さまざまな理由で入れられない数字がでてきて、 入れられる数字が1つになったマスが、その数字に確定する。
上図は、タテとヨコを見ただけで分かる場合で、 かなり簡単な場合である。 AおよびBは1に決定してしまうのだが、分かるだろう。
普通は、もうちょっと面倒な方法で決まって行く。 中級レベルになると、タテとヨコを単純に眺めただけでは無理になり、 間接的に決まる、あるいは置ける場所が限定されることを利用して さらに決まっていく。
言葉では分かりにくいので、実例を示そう。
左上のブロックで、5が入れられるのは、2個所の★しかないので、 上から2段目の横で5が入れられるのは2個所の★だけになり、 右の方には入れられないのを示すため、ピンクの線を引いた。
それにより、右上ブロックで5を入れられるのがDに確定する。
マスが完全確定する場合でも、 非常に簡単な方法で確定する場合もあれば、 ここに示したのよりもさらに高度な、あるいは面倒な方法で 確定することもある。
不完全確定マス
以上のように、あるマスがただ1つの数字に確定する場合はそれで、 「1マス落着」となるのだが、もっとゆるい落着がある。
この場合、既にある2あるいは3の影響の及ぶ範囲を2重線で示している。 すると、左上の3×3ブロックでは、黄色の2マスの中にだけ、 2と3を置くことができる。 このように、完全確定ではないが、置いてもよい数字が絞られる場合がある。 上級テクニックの中には、このように、不完全確定(?)あるいは 自由度を減少させるだけの場合が少なくない。
仮定で解く
要するに、確定する理由を考えながら解くのが正統な解き方だ。
仮定で解く
しかし、この方法だけでは解けなくなってしまうことがある。 もちろん、ちゃんと答えが存在する問題でも、 十分なテクニックがない場合、先へ進めなくなることがある。
その場合に行なうのが、仮定である。 仮定の場合、記入する数字の色を変える場合が多い。 あるいは、数字に〇をつけて仮定したもので、正しいかどうか分からない という目印をつけておく。
2つの可能性がある場合を考えよう。 一方が正解で、他方が不正解で行き詰まるはずである。 ナンプレでは、こういうとき、不正解の方を調べて、 行き詰まることを確認する。
行き詰まりとは、「1〜9のどの数字も入れられないマスができた」 という状態である。そういう状態になったら幸運である。 仮定してやってきたことが正しくなかったので、別の方が正解のはずだ。
仮定で困るのは、正しい方を選んだときである。 正しいのだから、行き詰まらない。 でも、仮定なんだから、正しいのかどうか分からない状態で進んでいるので、 とても困った状態である。
どうしても解けない場合には、仮定で解くのだが、 それは、あくまで、最後の手段である。 仮定で解けても、面白くない。 調べに調べて解けて、「何とか解けた」と思えるかも知れないが、 それでは快感がないだろう。
快感があってこそパズルである。

