Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace GameOfLife
- {
- public class Game
- {
- public static bool[,] NextStep(bool[,] field)
- {
- var a = new bool[field.GetLength(0), field.GetLength(1)];
- for (var i = 0; i < field.GetLength(0) - 1; i++)
- for (var j = 0; j < field.GetLength(1) - 1; j++)
- a[i, j] = field[i, j];
- for (var i = 0; i < field.GetLength(0) - 1; i++)
- for (var j = 0; j < field.GetLength(1) - 1; j++)
- {
- var temp = new bool[3, 3];
- if (i == 0 || j == 0 || i == field.GetLength(0) - 1 || j == field.GetLength(1) - 1)
- temp = GetUnic(i, j, field);
- else
- temp = new bool[,]{{field[i - 1 , j - 1], field[i - 1, j], field[i - 1, j + 1]},
- {field[i, j - 1], field[i , j], field[i, j + 1]},
- {field[i + 1 , j - 1], field[i + 1, j], field[i + 1, j + 1]}
- };
- a[i, j] = Check(temp);
- }
- return a;
- }
- private static bool[,] GetUnic(int i, int j, bool[,] field)
- {
- if (i == 0 && j == 0)
- return new bool[,]{{false, false, false},
- {false, field[i , j], field[i, j + 1]},
- {false, field[i + 1, j], field[i + 1, j + 1]}
- };
- if (i == 0 && j == field.GetLength(1) - 1)
- return new bool[,]{{false, false, false},
- {field[i, j - 1], field[i , j], false},
- {field[i + 1 , j - 1], field[i + 1, j], false}
- };
- if (i == field.GetLength(0) - 1 && j == 0)
- return new bool[,]{{false, field[i - 1, j], field[i - 1, j + 1]},
- {false, field[i , j], field[i, j + 1]},
- {false, false, false}
- };
- if (i == field.GetLength(0) - 1 && j == field.GetLength(1) - 1)
- return new bool[,]{{field[i - 1 , j - 1], field[i - 1, j], false},
- {field[i, j - 1], field[i , j],false},
- {false, false, false}
- };
- if (i == field.GetLength(0) - 1)
- return new bool[,]{{field[i - 1 , j - 1], field[i - 1, j], false},
- {field[i, j - 1], field[i , j], false},
- {field[i + 1 , j - 1], field[i + 1, j], false}
- };
- if (i == 0)
- return new bool[,]{{false, false, false},
- {field[i, j - 1], field[i , j], field[i, j + 1]},
- {field[i + 1 , j - 1], field[i + 1, j], field[i + 1, j + 1]}
- };
- if (j == 0)
- return new bool[,]{{false, field[i - 1 , j], field[i , j + 1]},
- {false, field[i , j], field[i, j + 1]},
- {false, field[i + 1, j], field[i + 1, j + 1]}
- };
- if (j == field.GetLength(1) - 1)
- return new bool[,]{{field[i - 1 , j - 1], field[i - 1, j], false},
- {field[i, j - 1], field[i , j], false},
- {field[i + 1, j - 1], field[i + 1, j], false}
- };
- return null;
- }
- public static bool Check(bool[,] field)
- {
- var result = 0;
- for (var i = 0; i < 3; i++)
- for (var j = 0; j < 3; j++)
- if (field[i, j] && !(i == 1 && j == 1))
- result += 1;
- if (result == 2)
- return field[1, 1];
- if (result == 3)
- return true;
- return false;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement