Hidden Single

Hidden Single
Houseを構成するセル群の中で、ある数字Nを候補に持つのが唯一のセルのとき、そのセルは数字Nと確定する」という方法です。 左の例では X=4 に確定します。


問題例

Hidden Single

各セルの赤で表示した数字は、行・列・ブロックのいずれかのhouseに関して唯一であり、確定する。

...6.83....7..45..6..73.428.6.....13..4...6.....3..2.7518.2..3.4.3..6...296...7..

Hidden Singleの解析プログラムは、3.1 Last Digitとほぼ同じで、 Last Digitが全ての数字について列挙するのに対し、Hidden Singleは個々の数字を指定してセルを列挙し、それが唯一のセルである箇所を探します。

解析プログラム Hidden Single

public class SimpleSingleGen: AnalyzerBaseV2{
    public bool HiddenSingle( ){
        bool  SolFond=false;
        for( int no=0; no<9; no++ ){
            int noB=1<<no;
            for( int tfx=0; tfx<27; tfx++ ){
                if( pBDL.IEGetCellInHouse(tfx,noB).Count()==1 ){
                    SolFond=true;
                    var P=pBDL.IEGetCellInHouse(tfx,noB).First();
                    if(P.FreeBC==1)  continue;
                    P.FixedNo=no+1;
                    if( !MltSolOn )  goto LFond;
                }
            }
        }

        LFond:
        if(SolFond){
            SolCode=1;
            Result="Hidden Single";
            if( SolInfoDsp ) ResultLong="Hidden Single";
            AnMan.SnapSaveGP();   //SimpleSingleGen is not covered by SnapSaveGP
            return true;
        }
        return false;
    }
}

Top