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; } } }