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); }
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); }
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); }