このアーカイブは同期化されません。 mixi の日記が更新されても、このアーカイブには反映されません。
ののぐらむの解法を考えてみよう。
解答欄は 2 次元だが、解法の基本は
1 つの行や列に着目することである。
行や列のセル数とヒントの数値によって
自動的に幾つかのセルを決定させることができる場合がある。
それを見つけ出すのが最も重要である。
例えば、7 個のセルがあり、
そのヒントが、「2 3」の場合を考えてみよう。
2 3 _______
これを通常に解く場合、まずは全て左に詰めた場合と
全て右に詰めた場合を考えてみる。
2 3 ◆◆□●●●□(左詰め)
2 3 □◆◆□●●●(右詰め)
左右に詰めた際に塗りつぶされる領域を黒い印で示した。
◆は 2、●は 3 に対応している。
これらの両方において同じ形の印が重なる部分は、
どのようなパターンでも塗りつぶされることが確定する。
これにより、上の例は以下のように確定できる。
2 3 _◆__●●_(左詰め)
上の考察により 3 箇所が決まった。
パズルは 2 次元なので、確定した場所は、
列方向のヒント解読にも影響を及ぼす。
これによって縦⇒横⇒縦⇒横と連鎖していき、
最終的には全てのマスが確定し、解答となるのだ。
これをコードで実現しなければならない。