Beispiel #1
0
        public override bool[,] Iterate()
        {
            CircularArray2D <bool> newGrid = new CircularArray2D <bool>(Grid.Width, Grid.Height);

            for (int y = 0; y < newGrid.Height; y++)
            {
                bool current;
                bool preprevious;
                for (int x = 0; x < newGrid.Width; x++)
                {
                    current = Grid[x, y];

                    preprevious = Grid[x - 2, y];

                    //[left_cell XOR(central_cell OR right_cell)]
                    bool active  = preprevious ^ current;
                    int  targetX = x - 1;
                    int  targetY = y + 1;

                    newGrid[targetX, targetY] = active;
                }
            }

            Grid.Content = newGrid.Content;

            return(Grid.Content);
        }
        public void TestLangtonIterate()
        {
            bool[,] StartingContent = new bool[8, 8]
            {
                { false, false, false, false, false, false, false, false },
                { false, false, false, false, false, false, false, false },
                { false, false, false, false, false, false, false, false },
                { false, false, false, false, false, false, false, false },
                { true, false, false, false, false, false, false, false },
                { false, false, false, false, false, false, false, false },
                { false, false, false, false, false, false, false, false },
                { false, false, false, false, false, false, false, false }
            };

            CircularArray2D <bool>         StartingArray     = new CircularArray2D <bool>(StartingContent);
            CellularAutomata <LangtonsAnt> _CellularAutomata = new CellularAutomata <LangtonsAnt>(StartingArray);

            bool[,] IteratedContent = _CellularAutomata.Iterate();

            bool[,] ModelContent = new bool[8, 8]
            {
                { false, false, false, false, true, false, false, false },
                { false, false, false, false, false, false, false, false },
                { false, true, false, false, false, true, false, false },
                { false, false, false, false, false, false, false, false },
                { false, false, true, false, false, false, true, false },
                { false, false, false, false, false, false, false, false },
                { false, false, false, true, false, false, false, true },
                { false, false, false, false, false, false, false, false }
            };

            Assert.AreEqual(IteratedContent, ModelContent);
        }
Beispiel #3
0
        public override bool[,] Iterate()
        {
            CircularArray2D <bool> newGrid = new CircularArray2D <bool>(Grid.Width, Grid.Height);

            for (int y = 0; y < newGrid.Height; y++)
            {
                int Y5 = y - 5;

                if (Y5 < 0)
                {
                    Y5 += newGrid.Height;
                }
                for (int x = 0; x < newGrid.Width; x++)
                {
                    newGrid[x, y] = Grid[x, Y5];
                }
            }

            Grid.Content = newGrid.Content;

            return(Grid.Content);
        }
Beispiel #4
0
        public override bool[,] Iterate()
        {
            CircularArray2D <bool> newGrid = new CircularArray2D <bool>(Grid.Width, Grid.Height);

            for (int y = 0; y < newGrid.Height; y++)
            {
                bool current;
                bool previous;
                bool preprevious;
                bool current2;
                bool previous2;
                bool preprevious2;
                //2 cells down
                int y2 = y + 2;

                for (int x = 0; x < newGrid.Width; x++)
                {
                    current  = Grid[x, y];
                    current2 = Grid[x, y2];

                    previous     = Grid[x - 1, y];
                    preprevious  = Grid[x - 2, y];
                    previous2    = Grid[x - 1, y2];
                    preprevious2 = Grid[x - 2, y2];

                    bool active  = (preprevious && previous) || (previous && preprevious2) || (current && previous);
                    int  targetX = x - 1;
                    int  targetY = y + 1;

                    newGrid[targetX, targetY] = active;
                }
            }

            Grid.Content = newGrid.Content;

            return(Grid.Content);
        }