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); }
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)); }
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); }
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); }
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); }
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); }
public void TestExample01() { var data = "0,3,6".Split(",").Select(int.Parse).ToArray(); Assert.AreEqual(436, NumbersGame.GetLastNumber(data)); }
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)); }
public void TestExample04() { var data = "1,2,3".Split(",").Select(int.Parse).ToArray(); Assert.AreEqual(27, NumbersGame.GetLastNumber(data)); }