Ejemplo n.º 1
0
        private static void GenerateAllSolutionsTrees()
        {
            System.Console.WriteLine();
            System.Console.WriteLine("Generating all solutions trees...");
            System.Console.WriteLine();

            FileInfo[] files = new DirectoryInfo(Directories.Examples).GetFiles(FileExtensions.XmlZipMask);

            ShowProgress(0, 70);

            new DirectoryInfo(Directories.SolutionTrees).CreateOrEmpty();

            ConcurrentCounter counter = new ConcurrentCounter();

            Parallel.ForEach(files, (file) =>
            {
                SudokuBoard board = SudokuBoard.LoadFromFile(file.FullName);

                for (int i = 0; i < 4; i++)
                {
                    SudokuSolutionNode node = SudokuSolutionNode.CreateRoot(board);
                    node.SolveWithStepAll();
                    node.SaveToFile(Directories.SolutionTrees + Path.DirectorySeparatorChar +
                                    Path.GetFileNameWithoutExtension(Path.GetFileNameWithoutExtension(file.FullName)) + "_rotate_" + i + FileExtensions.XmlZipExt);

                    board = board.Rotate();
                }

                counter.Increment();
                lock (counter)
                {
                    ShowProgress(counter.Value * 70 / files.Length, 70);
                }
            });
        }