Example #1
0
        public IPage CreatePage(PageSelection element, string pageId)
        {
            UserControl page;
            string      headerName;

            switch (element)
            {
            case PageSelection.CardGame:
                page       = new CardGame(pageId);
                headerName = "PAO Card Game";
                break;

            case PageSelection.ShowHelp:
                headerName = "Help";
                page       = new Help(pageId);
                break;

            case PageSelection.NumberGame:
                page       = new NumbersGame(pageId);
                headerName = "Number Game";
                break;

            default:
                throw new Exception("Unknown page selection detected");
            }

            CreateTab(page, pageId, headerName);

            return(page as IPage);
        }
        public void Part2()
        {
            int[]       numbers = new int[] { 9, 12, 1, 4, 17, 0, 18 };
            NumbersGame game    = new NumbersGame();

            game.Play(numbers, 30000000);
            Assert.Equal(1407, game.CurrentNumber);
        }
        public void Part2Sample(int expected, int number1, int number2, int number3)
        {
            int[]       numbers = new int[] { number1, number2, number3 };
            NumbersGame game    = new NumbersGame();

            game.Play(numbers, 30000000);
            Assert.Equal(expected, game.CurrentNumber);
        }
        public void Part1()
        {
            int[]       numbers = new int[] { 9, 12, 1, 4, 17, 0, 18 };
            NumbersGame game    = new NumbersGame();

            game.Play(numbers, 2020);
            Assert.Equal(610, game.CurrentNumber);
        }
Example #5
0
        public void NotSolvable()
        {
            var       game = new NumbersGame(new int[] { 10, 5 }, 3);
            ISolution solution;
            var       solver = new ProgressiveRecursiveBruteForceSolver();
            bool      solved = solver.GetFirstSolution(game, out solution);

            Assert.AreEqual(false, solved);
        }
        private readonly List <INumbersGame> _wip = new List <INumbersGame>(60); // work in progress

        public bool GetFirstSolution(int[] inputNumbers, int target, out ISolution solution)
        {
            var initialNumbers = new NumbersGame(inputNumbers)
            {
                Target = target
            };

            return(GetFirstSolution(initialNumbers, out solution));
        }
Example #7
0
        public void SolveDivisionAndSubtraction()
        {
            var       game = new NumbersGame(new int[] { 10, 50, 1 }, 4); // must be (50/10)  -1
            ISolution solution;
            var       solver = new ProgressiveRecursiveBruteForceSolver();
            bool      solved = solver.GetFirstSolution(game, out solution);

            Assert.AreEqual(true, solved);
            Assert.AreEqual(2, solution.NumberOfOperations);
        }
Example #8
0
        public void SolveMultiplicationAndAddition()
        {
            var       game = new NumbersGame(new int[] { 10, 7, 2 }, 24); // must be (7*2) + 10
            ISolution solution;
            var       solver = new ProgressiveRecursiveBruteForceSolver();
            bool      solved = solver.GetFirstSolution(game, out solution);

            Assert.AreEqual(true, solved);
            Assert.AreEqual(2, solution.NumberOfOperations);
        }
Example #9
0
        public void SolveSimpleAddition()
        {
            var       game = new NumbersGame(new int[] { 1, 2 }, 3); // must be (1+2)
            ISolution solution;
            var       solver = new ProgressiveRecursiveBruteForceSolver();
            bool      solved = solver.GetFirstSolution(game, out solution);

            Assert.AreEqual(true, solved);
            Assert.AreEqual(1, solution.NumberOfOperations);
        }
Example #10
0
 private static Boolean KawigiEdit_RunTest(int testNum, int[] p0, Boolean hasAnswer, int p1)
 {
     Console.Write("Test " + testNum + ": [" + "{");
     for (int i = 0; p0.Length > i; ++i) {
         if (i > 0) {
             Console.Write(",");
         }
         Console.Write(p0[i]);
     }
     Console.Write("}");
     Console.WriteLine("]");
     NumbersGame obj;
     int answer;
     obj = new NumbersGame();
     DateTime startTime = DateTime.Now;
     answer = obj.winningNumber(p0);
     DateTime endTime = DateTime.Now;
     Boolean res;
     res = true;
     Console.WriteLine("Time: " + (endTime - startTime).TotalSeconds + " seconds");
     if (hasAnswer) {
         Console.WriteLine("Desired answer:");
         Console.WriteLine("\t" + p1);
     }
     Console.WriteLine("Your answer:");
     Console.WriteLine("\t" + answer);
     if (hasAnswer) {
         res = answer == p1;
     }
     if (!res) {
         Console.WriteLine("DOESN'T MATCH!!!!");
     } else if ((endTime - startTime).TotalSeconds >= 2) {
         Console.WriteLine("FAIL the timeout");
         res = false;
     } else if (hasAnswer) {
         Console.WriteLine("Match :-)");
     } else {
         Console.WriteLine("OK, but is it right?");
     }
     Console.WriteLine("");
     return res;
 }
        public bool GetFirstSolution(NumbersGame initialGame, out ISolution solution)
        {
            var t0 = DateTime.Now;

            _wip.Add(initialGame);

            while (_wip.Any())
            {
                // Process exactly the lists we had from the last iteration first
                // That begins at 1, for the single initial game
                int lists = _wip.Count;
                for (int idx = 0; idx < lists; ++idx)
                {
                    INumbersGame game = _wip[idx];
                    if (game.IsSolved)
                    {
                        solution = new Solution(game.History, DateTime.Now - t0);
                        return(true);
                    }

                    if (!game.IsExhausted)
                    {
                        var derivatives = game.CreateAllDescendents();
                        foreach (var v in derivatives)
                        {
                            _wip.AddRange(derivatives);
                        }
                    }
                }
                // We have dealt with (0,lists] now. RemoveRange does exactly what we need.
                _wip.RemoveRange(0, lists);
            }
            // There aint one
            solution = null;
            var t1 = System.DateTime.Now;
            var dt = t1 - t0;

            Console.WriteLine("Exhausting the possibilities took {0} s {1} ms", dt.Seconds, dt.Milliseconds);
            return(false);
        }
Example #12
0
        public void TestExample01()
        {
            var data = "0,3,6".Split(",").Select(int.Parse).ToArray();

            Assert.AreEqual(436, NumbersGame.GetLastNumber(data));
        }
Example #13
0
        public void TestFullPart02()
        {
            var data = "0,20,7,16,1,18,15".Split(",").Select(int.Parse).ToArray();

            Assert.AreEqual(129262, NumbersGame.GetLastNumber(data, 30_000_000));
        }
Example #14
0
        public void TestExample04()
        {
            var data = "1,2,3".Split(",").Select(int.Parse).ToArray();

            Assert.AreEqual(27, NumbersGame.GetLastNumber(data));
        }