コード例 #1
0
ファイル: sudoku.cs プロジェクト: comsom/CSharp-Practice
 public FlagSeq(FlagSeq fs)
 {
     foreach (int i in Range9.ary)
     {
         private_fs[i] = fs[i];
     }
 }                         //copy
コード例 #2
0
ファイル: sudoku.cs プロジェクト: comsom/CSharp-Practice
    void off_min()
    {
        Pos     pos = choose_pos();
        FlagSeq fs  = fsboard[pos.r, pos.c];

        foreach (int i in Range9.ary)
        {
            if (fs[i] == true)
            {
                fs[i] = false;
                break;
            }
        }
    }
コード例 #3
0
ファイル: sudoku.cs プロジェクト: comsom/CSharp-Practice
 FlagSeq [,] fsboard_dup()
 {
     FlagSeq [,] fsb = new FlagSeq [Range9.length, Range9.length];
     foreach (int i in Range9.ary)
     {
         foreach (int j in Range9.ary)
         {
             if (board[i, j] == 0)
             {
                 fsb[i, j] = new FlagSeq(fsboard[i, j]);
             }
         }
     }
     return(fsb);
 }
コード例 #4
0
ファイル: sudoku.cs プロジェクト: comsom/CSharp-Practice
 // ---------------------- Constructor ----------------------
 public SudokuSolver(int [,] b)
 {
     // board の初期化
     board = b;
     // fsboard の初期化
     foreach (int i in Range9.ary)
     {
         foreach (int j in Range9.ary)
         {
             if (board[i, j] == 0)
             {
                 fsboard[i, j] = new FlagSeq(); // すべての flag が true である配列を生成して返す。
                 initial_check_num(i, j);
             }
         }
     }
     // 最初の理詰め
     logical_put(); // 確定したマスに数字を入れて、その影響計算を計算して……
 }
コード例 #5
0
ファイル: sudoku.cs プロジェクト: comsom/CSharp-Practice
    // -------------------- put_min --------------------
    void put_min(Pos pos)
    {
        int     r = pos.r, c = pos.c;
        FlagSeq fs = fsboard[r, c];
        int     i;

        // 置きにいく。
        for (i = 0; i < Range9.length; i++)
        {
            if (fs[i] == true)
            {
                break;
            }
        }
        board[r, c] = i + 1; // flag を倒したりはしない(don't care)。
        // 影響計算をする。
        influence_rect(r, c, r, 0, 1, 9);
        influence_rect(r, c, 0, c, 9, 1);
        influence_rect(r, c, (r / 3) * 3, (c / 3) * 3, 3, 3);
    }