Пример #1
0
        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);
        }
Пример #2
0
        public void OptimalFlipsBigDataSet(int down)
        {
            var pancakeStack = new PancakeStack(new String('-', down));

            var flipFinder = new FlipFinder();

            var bestStack = flipFinder.FindOptimalStack(new List <PancakeStack> {
                pancakeStack
            });
        }
Пример #3
0
        public void BenchmarkTest02()
        {
            var longString   = "---------------+--------------------------------+---------------+---------++++--------+-----------+---";
            var pancakeStack = new PancakeStack(longString);

            var flipFinder = new FlipFinder();

            var bestStack = flipFinder.FindOptimalStack(new List <PancakeStack> {
                pancakeStack
            });
        }
Пример #4
0
        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);
        }
Пример #5
0
        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();
            }
        }
Пример #6
0
        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
            });
        }
Пример #7
0
        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);
        }
Пример #8
0
        public void ReadyToServe(string input)
        {
            var pancakeStack = new PancakeStack(input);

            Assert.IsTrue(pancakeStack.ReadyToServe());
        }
Пример #9
0
        public void ConstructorTest(string input, string expectedHash)
        {
            var pancakeStack = new PancakeStack(input);

            Assert.AreEqual(expectedHash, pancakeStack.GetHash());
        }