Example #1
0
        public void BadStep()
        {
            var sol = new Solution("Input.txt");


            var state = sol.startingState;

            Assert.AreEqual("...........  D B b A  C c d a", state.Inline());
            state = DoStep(state, Amphipods.b, 5);
            Assert.AreEqual(".....b.....  D B . A  C c d a", state.Inline());
            state = DoStep(state, Amphipods.d, 13);
            Assert.AreEqual(".....b.....  D B d A  C c . a", state.Inline());
            state = DoStep(state, Amphipods.A, 7);
            Assert.AreEqual(".....b.A...  D B d .  C c . a", state.Inline());
            state = DoStep(state, Amphipods.a, 14);
            Assert.AreEqual(".....b.A...  D B d a  C c . .", state.Inline());
            state = DoStep(state, Amphipods.B, 3);
            Assert.AreEqual("...B.b.A...  D . d a  C c . .", state.Inline());
            state = DoStep(state, Amphipods.c, 12);
            Assert.AreEqual("...B.b.A...  D c d a  C . . .", state.Inline());

            var queue = new NetTopologySuite.Utilities.PriorityQueue <State>();

            state.GenerateTransitions(queue, (int)Amphipods.b);

            foreach (var newState in queue)
            {
                // b 5 -> 16 !
                Assert.AreNotEqual("...B...A...  D c d a  C b . .", newState.Inline());
            }
        }
Example #2
0
        private State DoStep(State state, Amphipods amphipod, int destination)
        {
            var queue = new NetTopologySuite.Utilities.PriorityQueue <State>();

            state.AddMove(queue, (int)amphipod, destination);

            return(queue.Poll());
        }
Example #3
0
        public void TestNewStateCountFromStart(string input, int num)
        {
            var sol = new Solution(input);

            var queue = new NetTopologySuite.Utilities.PriorityQueue <State>();

            sol.startingState.GenerateTransitions(queue);

            Assert.AreEqual(num, queue.Size);
        }
Example #4
0
        public void HeuristicTest()
        {
            var sol = new Solution(twoAway);

            var queue  = new NetTopologySuite.Utilities.PriorityQueue <State>();
            var toMove = sol.startingState.Occupier[12];

            sol.startingState.AddMove(queue, toMove, 5);

            var movedState = queue.Poll();

            Assert.AreEqual(46, movedState.TotalCost);

            sol.startingState.AddMove(queue, toMove, 3);

            movedState = queue.Poll();

            Assert.AreEqual(44, movedState.TotalCost);
        }