Exemplo n.º 1
0
        /*
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        static void Main()
        {
            // load sudoku table
            //Configuration cfg = new Configuration("cfg.xml");
        Configuration cfg = new Configuration("./cfg.xml");
            if (!cfg.ReadCfg())
                return;
        if ( Run(cfg.sudokuTable) )
                Console.WriteLine("Congratulations you solved this Sudoku!");
            else
                Console.WriteLine("Your table has errors! Try again.");
        }
          */
        public static bool Run(ref Configuration cfg)
        {
            // check if table ok
            SimpleBuilder bld = new SimpleBuilder(cfg.sudokuTable, cfg.boxRows, cfg.boxColumns);
            //Debug.PrintArr(ref cfg.sudokuTable);
            int[] symbols = new int[cfg.sudokuTable.GetLength(0)];
            for (int i = 0; i < symbols.GetLength(0); i++)
                symbols[i] = i + 1;
            if (!bld.Run(cfg.sudokuTable, symbols))
                return false;

            // sudoku solver
            int[,] locCover = bld.GetCover();
            //Debug.PrintArr(ref locCover);
            if (locCover == null)
                return false;

            SimpleSolver slv = new SimpleSolver(locCover);
            ///////////////////////
            // build resolver table
            int[,] locTable = new int[locCover.GetLength(0) + 1, locCover.GetLength(1) + 1];
            for (int i = 0; i < locCover.GetLength(0); i++)
            {
                for (int j = 0; j < locCover.GetLength(1); j++)
                {
                    locTable[i + 1, j + 1] = locCover[i, j];
                    locTable[0, j] = j;
                }
                locTable[i, 0] = i;
            }
            locTable[0, locCover.GetLength(1)] = locCover.GetLength(1);
            locTable[locCover.GetLength(0), 0] = locCover.GetLength(0);
            ///////////////////////

            List<int> arrSolution = new List<int>(locCover.GetLength(1));
            if ( !slv.CheckConflicts(locTable) )
              //    Console.WriteLine("Givens Sudoku table valid(should have a solution)");
              //else
            {
                //Debug.PrintArr(ref locTable);
                //Console.WriteLine("Wrong givens!");
                return false;
            }
            if ( slv.Resolve(locTable, ref arrSolution) )
              {
                //Console.WriteLine("Congratulations you solved this Sudoku!");
            return true;
              }
            else
              {
                //Console.WriteLine("Your table has errors! Try again.");
            return false;
              }
        }
Exemplo n.º 2
0
    /// <summary>
    /// This is the place where correct properties are set for the fields.
    /// </summary>
    protected void Setup_Fields()
    {
        m_cfg = new Sudoku.Configuration("./App_Data/cfg.xml");
        bool bCfgOK = m_cfg.ReadCfg();

        TextBox current = new TextBox();
        for (int i = 0; i < 9; i++)
        {
            for (int j = 0; j < 9; j++)
            {
                current = (TextBox)form1.FindControl("tb" + i.ToString() + j.ToString());
                current.Columns = 3;
                current.Height = 20;
        if ( bCfgOK && i < m_cfg.columns && j < m_cfg.rows )
          {
            current.Text = m_cfg.sudokuTable[i,j].ToString();
          }
            }
        }
        current = (TextBox)form1.FindControl("txtResult");
        current.Text = "";
    }
Exemplo n.º 3
0
    /// <summary>
    /// This is the place where correct properties are set for the fields.
    /// </summary>
    protected void Setup_Fields()
    {
        m_cfg = new Sudoku.Configuration("./App_Data/cfg.xml");
        bool bCfgOK = m_cfg.ReadCfg();

        TextBox current = new TextBox();

        for (int i = 0; i < 9; i++)
        {
            for (int j = 0; j < 9; j++)
            {
                current         = (TextBox)form1.FindControl("tb" + i.ToString() + j.ToString());
                current.Columns = 3;
                current.Height  = 20;
                if (bCfgOK && i < m_cfg.columns && j < m_cfg.rows)
                {
                    current.Text = m_cfg.sudokuTable[i, j].ToString();
                }
            }
        }
        current      = (TextBox)form1.FindControl("txtResult");
        current.Text = "";
    }