public void FlipTestTopOnly(string input, string expectedHash) { var pancakeStack = new PancakeStack(input); var newPancakeStack = PancakeFlipper.Flip(1, pancakeStack); Assert.AreEqual(expectedHash, newPancakeStack.GetHash()); Assert.AreEqual(1, newPancakeStack.Depth); }
public void OptimalFlipsBigDataSet(int down) { var pancakeStack = new PancakeStack(new String('-', down)); var flipFinder = new FlipFinder(); var bestStack = flipFinder.FindOptimalStack(new List <PancakeStack> { pancakeStack }); }
public void BenchmarkTest02() { var longString = "---------------+--------------------------------+---------------+---------++++--------+-----------+---"; var pancakeStack = new PancakeStack(longString); var flipFinder = new FlipFinder(); var bestStack = flipFinder.FindOptimalStack(new List <PancakeStack> { pancakeStack }); }
public void OptimalFlips(string input, int expectedDepth) { var pancakeStack = new PancakeStack(input); var flipFinder = new FlipFinder(); var bestStack = flipFinder.FindOptimalStack(new List <PancakeStack> { pancakeStack }); Assert.IsNotNull(bestStack); Assert.AreEqual(expectedDepth, bestStack.Depth); }
public static void ProcessCases(IEnumerable <RevengeOfThePancakesCase> cases) { foreach (var revengeOfThePancakesCase in cases) { var pancakeStack = new PancakeStack(revengeOfThePancakesCase.Input); var flipFinder = new FlipFinder(); var bestStack = flipFinder.FindOptimalStack(new List <PancakeStack> { pancakeStack }); revengeOfThePancakesCase.Output = bestStack.Depth.ToString(); } }
public void OptimalFlipsBigDataSet(int down, int up) { string setup = new String('-', down) + new String('+', up); Random rnd = new Random(); var mixed = setup.OrderBy(x => rnd.Next()).ToArray(); var mixedString = new string(mixed); Console.WriteLine(mixedString); var pancakeStack = new PancakeStack(mixedString); var flipFinder = new FlipFinder(); var bestStack = flipFinder.FindOptimalStack(new List <PancakeStack> { pancakeStack }); }
public static PancakeStack Flip(int fromTheTop, PancakeStack originalStack) { var newStack = new PancakeStack(originalStack.Stack); // Increade the depth, or flip count.... thinking about a tree for now, so keeping "depth" verbage newStack.Depth = originalStack.Depth + 1; newStack.FlipOrder = originalStack.FlipOrder + " -" + fromTheTop + "- "; // Change the order var flipped = newStack.Stack.Take(fromTheTop).ToArray(); // flip each over for (var i = 0; i < flipped.Length; i++) { newStack.Stack[i] = !flipped[i]; } return(newStack); }
public void ReadyToServe(string input) { var pancakeStack = new PancakeStack(input); Assert.IsTrue(pancakeStack.ReadyToServe()); }
public void ConstructorTest(string input, string expectedHash) { var pancakeStack = new PancakeStack(input); Assert.AreEqual(expectedHash, pancakeStack.GetHash()); }