コード例 #1
0
        public static void Main(string[] args)
        {
            if (!IsInputValid(args))
            {
                Console.WriteLine(StatusMessages.EXIT_MESSAGE);
                return;
            }

            string      inputFilename  = args[StatusMessages.INPUT_FILE_INDEX];
            string      outputFilename = null;
            OutputState output         = OutputState.console; // BRANCH: Output to Console

            if (args.Length == 2)                             // BRANCH: Output to given text file
            {
                output         = OutputState.textFile;
                outputFilename = args[StatusMessages.OUTPUT_FILE_INDEX];
            }

            Board board = new Board(inputFilename);

            Solver solver = new Solver();

            solver.SolvePuzzle(board);

            string hasWonMessage = "Solved";

            if (!board.HasWon())
            {
                hasWonMessage = "Unsolvable";
            }

            if (board.HasWon())
            {
                switch (output)
                {
                case OutputState.console:
                    board.PrintBoardToConsole(hasWonMessage, solver.GetTimes());
                    break;

                case OutputState.textFile:
                    board.PrintBoardToTextFile(hasWonMessage, outputFilename, solver.GetTimes());
                    break;
                }
            }
        }