お絵かきロジック
お絵かきロジック(おえかきロジック)は、縦と横の数字をヒントに塗り潰すマス目を割り出し、そのとおりに塗り潰していくと、最終的に絵(または文字)が浮かび上がるタイプのペンシルパズル。ののぐらむ、イラストロジック、ピクロスとも呼ばれている。
生い立ち
お絵かきロジックは、1988年に西尾徹也といしだのん(石田伸子)の二者が独自に発案した。同時期に別々に発表したため一時期論争を起こしたが、実際は殆ど同じ時期に別々に創案したということが分かり、論争もおさまった。
西尾は、マトリクスを使用したロジックパズルのマトリクスを利用して絵を描くことを考えた。一般的なロジックパズルにおいてはマトリクスには○か×を埋めるが、この○と×を黒マスと白マスにすることを考え、ヒントの出し方を考えて現在のルールを完成させた。
いしだは1987年に、ビルの窓を利用して絵を描くという企画で入選した後、窓の絵=格子の上に絵を描くパズルを考えた。このいしだの思考の過程の一部は彼女の著書である「ののぐらむ」で見ることができる。
このように二者が独自の過程を経て偶然にも同じ形式の問題に落ち着いた。後に西尾は問題を提供している『パズラー』誌で、いしだはパズルの連載をしていた『社会新報』紙で問題を発表することになるが、偶然にも両誌の発行日は共に1988年7月2日であった。
西尾は『パズラー』誌でこのパズルを発表した際に、このパズルを読者からも募集した。これにより高い人気を得、同誌から多くの作家が生まれることになった。一方いしだの作品は、イギリスの『サンデー・テレグラフ』紙で連載されることになった際に、同紙よりNONOGRAMと命名され、これにより、NONOGRAMはイギリスで人気を得ることになる。日本においては毎日新聞の日曜版でもののぐらむと命名されて、連載されていた(2006年現在、連載終了)。
1993年に世界文化社から『パズラー』別冊として単行本『お絵かきロジック vol.1』を発売し、20万部を売り上げる。これに便乗した類似本が何冊も出版されるようになるなど、お絵かきロジックの人気の火付け役となったと言われる[1]。なお、お絵かきロジックの名称は世界文化社の商標となっており、同名のパズル誌が刊行されている。
1994年10月には、日本文芸社が専門誌である『イラストロジック』誌を創刊し、学習研究社も1995年4月になって専門誌を創刊した[1]。
1995年にサン電子よりゲームソフト『おーちゃんのお絵かきロジック』(『パズラー』監修)を発売、スーパーファミコンやプレイステーション、セガサターン等の家庭用ゲーム機で楽しめるようになった。任天堂からはピクロス(ピクチャー・クロスワード)の名を冠して同年にゲームボーイ用ソフト『マリオのピクロス』を発売、以降シリーズ化されている。詳しくはピクロス (ゲームソフト)を参照。
基本的なルール
数字が単独である場合
1個の数字は連続して黒く塗り潰すマス目(以下黒マスという)の数を表している。但し、場所までは表していない。
(例)
3 |
に対しては、次の3通りの可能性が考えられる。
3 | |||||
3 | |||||
3 |
数字が複数ある場合
「白マス」について
数字が複数ある場合、それぞれが連続で黒マスの数を表し、間には必ず塗り潰さないマス(以下白マスという)が最低1つ入る。但し、白マスの場所と、間に幾つ入るかまでは表していない。
(例1)
1 | 1 |
に対しては、次の6通りが考えられる。
1 | 1 | |||||
1 | 1 | |||||
1 | 1 | |||||
1 | 1 | |||||
1 | 1 | |||||
1 | 1 |
(例2)
1 | 1 | 1 |
に対しては、次の1通りしか考えられない。
1 | 1 | 1 |
順番について
複数の異なる数字がある場合は、その順番が黒マスの順番を表している。
(例)
3 | 1 | |||||
1 | 3 |
に対しては、正解はそれぞれこのようになる。
3 | 1 | |||||
1 | 3 |
なお、横の場合のみを示したが、縦の場合も同じである。
(例)
2 |
1 |
に対しては、次の3通りが考えられる。
2 | 2 | 2 |
1 | 1 | 1 |
基本的なルールはこれだけである。
(参照チュートリアル:コンセプティス アートロジック)
解く時の定石
ここでは、1列に10マスあるパズルを解くことを想定している。また、スペース節約のため横の列の場合のみを示すが、縦の場合も解き方は同じで、ここの総ての文章を、「左」を「上」に、「右」を「下」に読み替えれば縦の場合の解き方になる。
第1段階
第1段階では、解き始めで何も手掛りがない状態なので、手掛り無しでも黒マスか白マスか判る所から確定していく。ここでの作業を漏らすと、途中で行き詰まるので、確実にやっておかなくてはならない。
0と最高値を処理
先ず初めに行うのは、0と最高値(ここでは10)から処理するということである。何も考えなくても0の列は全部白マスであり、最高値の列は全部黒マスであることが明らかなためである。
10 |
白マスであることが確定したマスには、下のように印(よく使われるのは×)を付けておくとよい。ただ、あまり大きな印をつけると、出来上がった時に絵が見辛くなるので要注意である。
0 | × | × | × | × | × | × | × | × | × | × |
足して最高値になる列を処理
複数の数字がある列で、数字と数字の間に白マスが1つと仮定して計算すると、ちょうど最高値と同じ数になる列は、1通りの可能性しかないので数字と数字の間に1マスだけ白マスを入れて塗り潰す。
(例)
7 | 2 |
は、7と2の間には白マスが1マスしかないと仮定すると、7+1+2=10(1は白マスの分、以下同じ)で最高値と同じ値になるから、次の1通りしかない。
7 | 2 | × |
この処理ができることは数字が細かくなればなるほど気づきにくいので、注意が必要である。例えば次のようなもの。
4 | 2 | 2 |
は、4+1+2+1+2=10だから、
4 | 2 | 2 | × | × |
である。もっと細かい場合もある。
1 | 2 | 1 | 1 | 1 |
は、1+1+2+1+1+1+1+1+1=10だから、
1 | 2 | 1 | 1 | 1 | × | × | × | × |
である。
左右につめた時に生じる共通の黒マスを処理
例えば、次の列はどう処理するか。
8 |
この列には次の3通りが考えられる。
8 | ||||||||||
8 | ||||||||||
8 |
この場合はどうしようも無いかというと、そうでもない。よく見ると、どの場合も真ん中の6マスは必ず塗られていることがわかる。従って、この列はこの様に一部が確定する。
8 |
もっと言えば、一番左のマスが黒マスだと仮定した場合と、一番右のマスが黒マスだと仮定した場合で、共通する黒マスは確定する。
(例)
6 |
これを、一番左が黒マスだと仮定すると、
6 |
逆に一番右が黒マスだと仮定すると、
6 |
2つを比べて、共通して黒マスになっているのは、
6 |
となり、黄色で示した中央の2つが共通するので、次の通りマスが確定する。
6 |
複数の数字がある場合についても、数字と数字の間の白マスを1マスと仮定すれば同じ事ができる。但し、左と右から塗った場合を比べた時に、黒マスで共通していても、別の数字に由来する場合は共通とは言わない(下の例を参照)。
(例)
4 | 2 |
一番左が黒マスと仮定して、
4 | 2 |
一番右が黒マスと仮定して、
4 | 2 |
2つを比べると、共通して黒マスになっているのは、
4 | 2 |
ここで、黄色のマスは同じ「4」で塗られているが、緑のマスは一番左から塗った場合は「2」、一番右から塗った場合は「4」で塗られているので、黄色のマスのみ確定である。従って次のように確定する。
4 | 2 |
下図のような場合の可能性を考慮すると緑色のマスは確定されないことがわかる。
4 | 2 |
第2段階
第1段階で確定出来るのはここまでである。後は第1段階で確定したマスを手掛りに、更に確定したマスを増やしていく作業に移る。第2段階で確定したマスも、新たに確定したマスを増やす手掛りになるので、解き終わるまでここの作業を繰り返すことになる。なお、これ以降は、既に確定している黒マスは茶色のマスで、既に確定している白マスは茶色の×で、新たに確定した黒マスと白マスはそれぞれ黒マスと黒い×で表すことにする。
全黒マス、全白マスが確定した列の処理
数字の合計と既に確定した黒マスの数が一致する場合、まだ確定していないマスは全て白マスに確定する。また、まだ確定していないマスと黒マスに確定したマスの合計が数字の合計に一致した場合は、まだ確定していないマスは黒マスに確定する。
(例1)
1 |
この場合、数字「1」に対して既に1つの黒マスが確定しているので、これ以外の黒マスは存在しない。従って、
1 | × | × | × | × | × | × | × | × | × |
と白マスが確定する。
(例2)
1 | 1 | 1 | 1 | テンプレート:Color | テンプレート:Color | テンプレート:Color | テンプレート:Color | テンプレート:Color | テンプレート:Color |
この場合、この列には合計4マスの黒マスがあるのだから、まだ確定していないマスが黒マスでないと、黒マスの数が足りなくなってしまう。従って
1 | 1 | 1 | 1 | テンプレート:Color | テンプレート:Color | テンプレート:Color | テンプレート:Color | テンプレート:Color | テンプレート:Color |
と黒マスが確定する。
黒マスの両隣を留める処理
数字と数字の間には白マスが1マス以上入るので、黒マスの連続が留まっていることがわかれば、その両隣は白マスに確定である。
(例1)
1 | 2 | 1 |
この場合、すでに塗られている黒マスは「2」に由来して連続していることは明らかである。数字と数字の間は必ず1つ以上の白マスがあるので、
1 | 2 | 1 | × | × |
と白マスが確定する。
(例2)
1 | 2 | 1 |
(例1)の場合と似ているが、今度は既に確定しているマスは「1」に由来するものか「2」に由来するものか、この時点では明らかでないので、新たに確定できるマスはない。
端の処理
一番外側が確定すると、外側の数字の表す黒マスは確定である。
(例1)
3 | 2 |
のように一番左が確定している場合、自動的に「3」が表しているのは
3 | 2 | × |
と確定する。前項で述べた「黒マスの両隣を留める処理」により、左から4番目に×をつけることも忘れないでほしい。
(例2)
3 | 2 |
と、一番右が確定している場合は、自動的に「2」が表しているのは、
3 | 2 | × |
と確定する。右から3つめの×は「黒マスの両隣を留める処理」によるものである。
狭小マスの処理
連続して取れるマスが数字より少ない場合は、その部分は白マスだと確定する。
(例1)
3 | テンプレート:Color |
は、右端から黒マスをとると2マスしか取れないので、右端には黒マスは入らない。従って
3 | テンプレート:Color | × | × |
と確定する。
(例2)
3 | テンプレート:Color | テンプレート:Color |
は、×と×の間には2マスしか取れないので、そこには黒マスは入らない。従って
3 | テンプレート:Color | × | × | テンプレート:Color |
と確定する。
確実に黒マスが届くマス、届かないマスを処理
既に黒マスが確定しており、数字と見比べて届かないマスがある場合は、そこは白マスに確定する。また、幾ら端に寄せても黒マスがはみ出す部分については黒マスに確定である。
(例1)
2 |
この場合、可能性は次の2通りしかない。
2 | ||||||||||
2 |
従って、次の様に確定する。
2 | × | × | × | × | × | × | × |
(例2)
5 |
この場合、右端から黒マスを取ったとしても、必ず右から5マス目に黒マスが届いてしまう。また、確定しているマスから左へ5マス取ったとしても、左から3マス目まで黒マスは届かないことが明らかである。従って
5 | × | × | × |
と確定する。
(例3)
3 | 4 |
この場合、右側の黒マスから左側に目一杯4マス分伸ばしたとしても、2つの黒マスは繋がらない。また、その間にはルールにより最低1つの白マスが必要なので、左から4マス目は4のマスとしては埋められない。となれば、4の左端が右にずれるので(左から5マス目)、そこから右に数えた4マス目が黒マスに確定する。
3 | 4 |
端や最高値の更新に対する処理
外側の白マスが連続して確定すると、その分だけ端が内側に寄ったものと見なす事が出来、それに伴ってその列の最高値がそれだけ少なくなったと見なせる。そこで、更新された端や最高値を使って黒マスと白マスを確定する。
(例1)
5 |
これは、第1段階では確定できなかった。しかし、
5 | テンプレート:Color |
と確定した場合、右端が1つ分内側にずれたものと見なす事が出来、右から2つめのマスを新しい右端と考えて「左右に詰めた時に生じる共通の黒マスの処理」を行うと、
5 | テンプレート:Color |
と確定できる。
(例2)
1 | 1 | 1 | 1 |
これは、第1段階では確定できなかった。しかし、
1 | 1 | 1 | 1 | テンプレート:Color | テンプレート:Color | テンプレート:Color |
と確定すると、この列は最高値が10から7に下がったと見なせる。すると、1+1+1+1+1+1+1=7となり、最高値と一致するので、
1 | 1 | 1 | 1 | × | × | × | テンプレート:Color | テンプレート:Color | テンプレート:Color |
と確定する。
分断されたマスの処理
長い空きマスの中ほどが白マスと確定すると、その左右をそれぞれ独立して処理することができる。
(例)
3 | 3 |
これは、第1段階では確定できなかった。しかし、
3 | 3 | テンプレート:Color |
と確定した場合、確定した白マスの左右いずれか一方にすべての黒マスが入ることはあり得ないので、左右それぞれに1つずつ入ることになり、
3 | 3 | テンプレート:Color |
と確定できる。
第3段階
問題の中には上記の技術を駆使しても解けない場合もある。
消去法
上記の方法だけで行き詰まった場合。任意の箇所を、仮に塗りつぶす箇所と仮定する。更に、それを手掛かりに問題を解いて行った場合に、後に矛盾点が生じてしまったら、そこは実は塗りつぶしてはいけない箇所だった事が分かる。
なお、矛盾点が発生するまでの展開が長いほど、先読みも困難であり、苦戦を強いられる。ゆえに、この方法は技術の中でも高度な熟練が要求される。
ゲーム『ピクロス』『ピクロスNP』では、「彫(『NP』では塗)」「×」「消」があるが、試し彫り(『NP』では試し塗り)マークという操作性はマリオのスーパーピクロス内で登場した。
解決の流れ
ファイル:Paint by numbers ex01.png |
|
| |
| |
| |
| |
| |
| |
| |
| |
ファイル:Paint by numbers ex10.png |
|
多色化
基本ルールでは白黒の絵しか描けないため、複数の色を使用できるようにしたルールも存在する。
最も一般的なものは、数字ごとに色が指定されていて、数字に指定された色で塗る物である。この場合、同じ列に数字が複数あっても違う色なら間に空白が入らなくともよいというルールが追加される(同色なら基本ルール同様1マス以上あける)。
解く際には以下の点に注意する必要がある。
- 数字と数字の間に空白が入らない場合があるので、確定するマスが少なくなる。
- 各色がどの列で使用されているかを確認する。これにより、その色で塗られない範囲が分かり、そこから決まる場合がある。
問題作成
ただドット絵を描いても、必ずしも問題として成立するとは限らない。答えが1つに絞れない場合があるためである。コンピュータ上で問題作成ができるソフト等では、問題として成立するかどうかを自動的に判定してくれる機能がついているものもある。
三角形のマス
塗りつぶすマスを、正方形を斜めに切った三角形にしたルールも存在する。このようなものをダイヤモンドロジックあるいはダイヤロジックなどと呼ぶ[2]。
備考
100×100マスなど膨大なマス数になってくると、塗れるマスを探すことが非常に手間になってくる。
ここで、第1段階で塗れるマスを計算によって求める方法がある。
- まず、求めたい行Aのヒントに出ている数をすべて足し合わせる(これは黒マスの合計)。
- 次に、行Aのヒントの数引く1をさらに足す(行Aが1,1,3,4の場合は3を足す。これは白マスの合計の最低値)。
- 最後に、塗れるかどうか知りたい数B(まずは行Aの最大の数が良い)をさらに足し合わせる。
この3つの段階で求めた数から、行Aのマス数(縦もしくは横のマス数)を引き、求まった正の数が、第1段階で数Bで塗れるマス数である。負の数になった場合は、行Aの数Bは第1段階では塗れない。塗る位置は第1段階の解き方を参照。