Esempio n. 1
0
        static void Main(string[] args)
        {
            var tables = SplitProblems(Problem.RawString);
            int result = 0;

            foreach (var table in tables)
            {
                SudokuState state = new SudokuState(table);
                //Console.WriteLine(state.ToString());
                while (state.Result == SudokoResult.InProgress)
                {
                    state.Step();
                }
                if (state.Result == SudokoResult.Completed)
                {
                    List<SudokuState> solutions = new List<SudokuState>();
                    state.GetSolutions(solutions);
                    result += 100 * solutions[0].GetValue(0, 0) + 10 * solutions[0].GetValue(1, 0) +
                              solutions[0].GetValue(2, 0);
                }
                else
                {
                    throw new Exception();
                }
            }

            Console.WriteLine(result);
            //if (state.Result == SudokoResult.Completed)
            //{
            //    Console.WriteLine("Completed. Solutions:");
            //    List<SudokuState> solutions = new List<SudokuState>();
            //    state.GetSolutions(solutions);
            //    foreach (SudokuState solution in solutions)
            //    {
            //        Console.WriteLine(solution);
            //        Console.WriteLine();
            //    }
            //}
        }
Esempio n. 2
0
        public SudokuState Clone()
        {
            SudokuState clone = new SudokuState();
            clone.m_Values = (int[,])m_Values.Clone();
            clone.m_Predefined = (bool[,])m_Predefined.Clone();
            clone.m_Possibilities = new List<int>[9, 9];

            for (int i = 0; i < SIZE; i++)
            {
                for (int j = 0; j < SIZE; j++)
                {
                    clone.m_Possibilities[i, j] = new List<int>(m_Possibilities[i, j]);
                }
            }

            return clone;
        }