Example #1
0
        /// <summary>
        /// This will take the current puzzle and solve it
        /// </summary>
        /// <remarks>
        /// This assumes that the puzzle is solvable.  Meaning, there was no malicious attempt to lock cell values so that the solver would be in an infinite loop
        /// </remarks>
        public static Puzzle Solve(Puzzle puzzle)
        {
            Puzzle ret = puzzle.Clone();

            // Clear all non-Locked values
            ret.Clear();

            // Call recursive function to do all the work
            //SolveRecursive(ret);

            // Call non-recursive function to do all the work
            SolveNonRecursive(ret);

            return(ret);
        }