Пример #1
0
        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))
                        {
                        }
                    }
                }
            }
        }
Пример #2
0
        //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);
        }