《スリザーリンク自動解答アルゴリズム》

大域的解法

大域的解法では、1つまたは2つの色の領域が盤面を分断しているかを調べる。1つの色の領域が盤面を分断している場合、分断された盤面の片側は、分断している色で塗りつぶすことができる。2つの色の領域が盤面を分断している場合、場合によっては、分断している2つの色が反対側ということが分かる。

盤面を分割する領域による解法

青紫のマスの8方向に連続した領域がループ状になっていて、盤面を分割している場合を考える。この場合、分割された盤面の両方に¬青紫が存在すると、両方の¬青紫を結ぶ経路には必ず青紫のマスが存在するため、大域条件に反する。そのため、分割された片側に¬青紫が存在すると、もう片方のすべてのマスが青紫になる。分割された盤面の片側に「0」以外の数字があれば、必ず¬青紫と同じ側が存在することになるので、この場合も同様に考えることができる。

2種類の色、青紫と橙色が8方向に隣接していて、2つの領域をつなげるとループ状になっている場合を考える。この場合に、分割された盤面の両方に「0」以外の数字がある場合、青紫と橙色が同じ側とすれば、これとは逆の側が分割されてしまい、大域条件に反する。つまり、この場合は青紫と橙色が逆の側ということが分かる。

青紫のマスの領域が、それ自体ではループ状になっていないが、「3」のマスを含めた領域がループ状になっている場合を考える。この場合に分割された盤面の両側に¬青紫があると、両方の¬青紫を結ぶ経路には必ず青紫のマスが存在することになる。片側の¬青紫が「3」のマスまで青紫を通らない経路がある場合、「3」のマスに隣接するマスの残り3つは青紫となるからである。つまり、この場合も最初のケースと同様に考えることができる。

2種類の色の領域が盤面を分割する場合も、同様に、「3」のマスを含めて盤面を分割すればよい。



市岡 耕平