Ejemplo n.º 1
0
        public void TestSolvingSpecificPuzzles()
        {
            string badPuzzlePath = @"Input\Puzzle-25x25-0902.txt";
            string multipleSolutionsPuzzlePath = @"Input\Puzzle-16x16-0902.txt";
            string goodPuzzlePath = @"Input\Puzzle-16x16-0301.txt";

            SudokuFiler filer = null;

            try
            {
                filer = new SudokuFiler(badPuzzlePath);
            }
            catch (Exception)
            {
            }

            Assert.IsTrue(filer == null);

            filer = new SudokuFiler(multipleSolutionsPuzzlePath);
            SudokuPuzzle puzzle = filer.CreatePuzzle();

            SudokuSolver.SudokuSolver.SudokuSolver solver = new SudokuSolver.SudokuSolver.SudokuSolver();
            Assert.IsTrue(solver.Solve(puzzle).Count == 2);

            filer  = new SudokuFiler(goodPuzzlePath);
            puzzle = filer.CreatePuzzle();
            solver = new SudokuSolver.SudokuSolver.SudokuSolver();
            Assert.IsTrue(solver.Solve(puzzle).Count == 1);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// The main entry point of the program
        /// </summary>
        /// <param name="args">An array of command line arguments</param>
        public static void Main(string[] args)
        {
            if (args.Length < 2)
            {
                Console.WriteLine("Error: Missing file paths");
            }
            else if (!File.Exists(args[0]))
            {
                Console.WriteLine($"Error: Could not find file {args[0]}");
            }
            else
            {
                try
                {
                    SudokuFiler  filer                  = new SudokuFiler(args[0]);
                    SudokuPuzzle puzzleToSolve          = filer.CreatePuzzle();
                    SudokuSolver.SudokuSolver solver    = new SudokuSolver.SudokuSolver();
                    List <SudokuPuzzle>       solutions = solver.Solve(puzzleToSolve);
                    OutputSolutions(args[1], filer, puzzleToSolve, solutions);
                }
                catch (Exception)
                {
                    string[]      sudokuFile = File.ReadAllLines(args[0]);
                    List <string> lines      = new List <string>();
                    foreach (string line in sudokuFile)
                    {
                        lines.Add(line);
                    }

                    lines.Add(string.Empty);
                    lines.Add("Bad Puzzle");
                    WriteToFile(args[1], lines);
                }
            }
        }
Ejemplo n.º 3
0
        public void TestSudokuSolver()
        {
            string[] files = Directory.GetFiles(Directory.GetCurrentDirectory() + @"\Input");

            foreach (string file in files)
            {
                try
                {
                    SudokuFiler filer = new SudokuFiler(file);
                    SudokuSolver.SudokuSolver.SudokuSolver solver = new SudokuSolver.SudokuSolver.SudokuSolver();
                    List <SudokuPuzzle> puzzles = solver.Solve(filer.CreatePuzzle());
                    Assert.IsTrue(puzzles.Count == 1);
                }
                catch (Exception e)
                {
                }
            }
        }