# vim:ft=txt #. Proximity analysis - some cells can be eliminated because they are not reachable (also consider that white cells of certain islands interfere with the extent of different islands). #. A straight row or column of black cells can be tested for black cells in its middle which will place two white cells and so one can conclude that they are white. #. If you have something like: |[B][G][B] |[G][G][B] ----------------- Then it is evident that the upper [G] (Gray/Unknown) has to be white, or else the lower [G]s will also all be black. #. Cells between two islands (either diagonally or in a one-cell spacing) must be black, or else the two islands will be joined. #. Filling-style strategy: if past a certain geometery (that is within the limits of its number), an island can only expand into one cell, then that cell will be white. #. If an Island reaches certain points that reaching them consumes all of its number, then its white edge points can be marked with black in the opposite direction to its extent. #. One cannot have a loop or a path of white cells (including diagonal ones) from one edge of the board to the other, which contains black cells inside, because this will prevent the black cells from being contiguous. - Alternative phrasing: a polymino of black cells that can only expand into a single grey cell will expand there. #. Sometimes extending an $N -1 island to a white cell in proximity to one of its cells will cause the remaining cells to form a 4*4 black region. As a result, this white cell must be black. #. Often when there's a situation like: [W][G][G] [B][B][B] We can see that the island should expand into the leftmost gray/unknown cell or else it will need to take a costly detour which will consume the rest of its number.