2006 年 5 月 19 日 22 時 59 分

アルゴリズム


このアーカイブは同期化されません。 mixi の日記が更新されても、このアーカイブには反映されません。


ののぐらむの解法を考えてみよう。

解答欄は 2 次元だが、解法の基本は
1 つの行や列に着目することである。

行や列のセル数とヒントの数値によって
自動的に幾つかのセルを決定させることができる場合がある。
それを見つけ出すのが最も重要である。

例えば、7 個のセルがあり、
そのヒントが、「2 3」の場合を考えてみよう。

2 3 _______

これを通常に解く場合、まずは全て左に詰めた場合と
全て右に詰めた場合を考えてみる。

2 3 ◆◆□●●●□(左詰め)
2 3 □◆◆□●●●(右詰め)

左右に詰めた際に塗りつぶされる領域を黒い印で示した。
◆は 2、●は 3 に対応している。
これらの両方において同じ形の印が重なる部分は、
どのようなパターンでも塗りつぶされることが確定する。

これにより、上の例は以下のように確定できる。

2 3 _◆__●●_(左詰め)

上の考察により 3 箇所が決まった。
パズルは 2 次元なので、確定した場所は、
列方向のヒント解読にも影響を及ぼす。

これによって縦⇒横⇒縦⇒横と連鎖していき、
最終的には全てのマスが確定し、解答となるのだ。

これをコードで実現しなければならない。



Copyright (c) 1994-2007 Project Loafer. All rights reserved.