public static void RunCompetition() { System.Console.BackgroundColor = ConsoleColor.Blue; System.Console.ForegroundColor = ConsoleColor.Yellow; System.Console.Clear(); System.Console.WriteLine("*** Competition ***"); for (int n = 0; n < 3; ++n) { System.Console.WriteLine("Round {0} - Standard Numbers Game with {1} big numbers", (n + 1), n); for (int t = 0; t < 10; ++t) { System.Console.WriteLine("Test {0}", t + 1); int[] initialNumbers; int target; if (GameGenerator.GenerateCountdownGame(n, out initialNumbers, out target)) { System.Console.Write("Numbers: ["); for (int i = 0; i < initialNumbers.Length; ++i) { System.Console.Write("{0}", initialNumbers[i]); if (i < initialNumbers.Length - 1) { System.Console.Write(", "); } } System.Console.WriteLine("]"); System.Console.WriteLine("\r\nTarget: {0}", target); } // Now try our solutions int numSolvers = SolverFactory.RegisteredSolvers; for (int s = 0; s < numSolvers; ++s) { var solver = SolverFactory.CreateSolver(s); ISolution solution; if (solver.GetSolution(initialNumbers, target, out solution)) { } } } } }
//TODO: Refactor - overly long method private static bool GetNumbersFromConsole(out int[] numbers, out int target) { target = 0; numbers = null; var currentNumbers = new List <int>(); bool numbersEntered = false; while (!numbersEntered) { System.Console.Write("Number(s) (Q to quit):"); var input = System.Console.ReadLine(); if (string.IsNullOrEmpty(input)) { if (currentNumbers.Count == 0) { GameGenerator.GenerateCountdownGame(2, out numbers, out target); return(true); } numbersEntered = true; continue; // Individual numbers entry is terminated with a blank entry } if (input.ToUpper().Substring(0, 1) == "Q") { return(false); } int number; while (input.Contains(",")) { numbersEntered = true; // We assume they're all on the one line here var commaPos = input.IndexOf(",", StringComparison.Ordinal); var numText = input.Substring(0, commaPos); if (Int32.TryParse(numText, out number)) { currentNumbers.Add(number); } input = input.Substring(commaPos + 1); } // We may have '= <Target>' bolted on to the string if (input.Contains("=")) { numbersEntered = true; // We assume they're all on the one line here var equalsPos = input.IndexOf("=", StringComparison.Ordinal); var targetText = input.Substring(equalsPos + 1); input = input.Substring(0, equalsPos); Int32.TryParse(targetText, out target); } if (Int32.TryParse(input, out number)) { currentNumbers.Add(number); } } if (target == 0) { System.Console.WriteLine("Enter target, or hit enter to generate a random target (Q to quit):"); var input = System.Console.ReadLine(); if (!string.IsNullOrEmpty(input)) { if (input.ToUpper().Substring(0, 1) == "Q") { return(false); } else { Int32.TryParse(input, out target); } } else { target = _random.Next(101, 1000); } } numbers = currentNumbers.ToArray(); return(true); }