SHARE
TWEET

Untitled

a guest Oct 21st, 2019 70 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. namespace GameOfLife
  2. {
  3.     public class Game
  4.     {
  5.         public static bool[,] NextStep(bool[,] field)
  6.         {
  7.             var a = new bool[field.GetLength(0), field.GetLength(1)];
  8.             for (var i = 0; i < field.GetLength(0) - 1; i++)
  9.                 for (var j = 0; j < field.GetLength(1) - 1; j++)
  10.                     a[i, j] = field[i, j];
  11.  
  12.             for (var i = 0; i < field.GetLength(0) - 1; i++)
  13.                 for (var j = 0; j < field.GetLength(1) - 1; j++)
  14.                 {
  15.                     var temp = new bool[3, 3];
  16.  
  17.                     if (i == 0 || j == 0 || i == field.GetLength(0) - 1 || j == field.GetLength(1) - 1)
  18.                         temp = GetUnic(i, j, field);
  19.  
  20.                     else
  21.                         temp = new bool[,]{{field[i - 1 , j - 1], field[i - 1, j], field[i - 1, j + 1]},
  22. {field[i, j - 1], field[i , j], field[i, j + 1]},
  23. {field[i + 1 , j - 1], field[i + 1, j], field[i + 1, j + 1]}
  24. };
  25.                     a[i, j] = Check(field);
  26.                 }
  27.  
  28.  
  29.             return a;
  30.         }
  31.  
  32.         private static bool[,] GetUnic(int i, int j, bool[,] field)
  33.         {
  34.             if (i == 0 && j == 0)
  35.                 return new bool[,]{{false, false, false},
  36. {false, field[i , j], field[i, j + 1]},
  37. {false, field[i + 1, j], field[i + 1, j + 1]}
  38. };
  39.             if (i == 0 && j == field.GetLength(1) - 1)
  40.                 return new bool[,]{{false, false, false},
  41. {field[i, j - 1], field[i , j], false},
  42. {field[i + 1 , j - 1], field[i + 1, j], false}
  43. };
  44.             if (i == field.GetLength(0) - 1 && j == 0)
  45.                 return new bool[,]{{false, field[i - 1, j], field[i - 1, j + 1]},
  46. {false, field[i , j], field[i, j + 1]},
  47. {false, false, false}
  48. };
  49.             if (i == field.GetLength(0) - 1 && j == field.GetLength(1) - 1)
  50.                 return new bool[,]{{field[i - 1 , j - 1], field[i - 1, j], false},
  51. {field[i, j - 1], field[i , j],false},
  52. {false, false, false}
  53. };
  54.             if (i == field.GetLength(0) - 1)
  55.                 return new bool[,]{{field[i - 1 , j - 1], field[i - 1, j], false},
  56. {field[i, j - 1], field[i , j], false},
  57. {field[i + 1 , j - 1], field[i + 1, j], false}
  58. };
  59.             if (i == 0)
  60.                 return new bool[,]{{false, false, false},
  61. {field[i, j - 1], field[i , j], field[i, j + 1]},
  62. {field[i + 1 , j - 1], field[i + 1, j], field[i + 1, j + 1]}
  63. };
  64.             if (j == 0)
  65.                 return new bool[,]{{false, field[i - 1 , j], field[i , j + 1]},
  66. {false, field[i , j], field[i, j + 1]},
  67. {false, field[i + 1, j], field[i + 1, j + 1]}
  68. };
  69.             if (j == field.GetLength(1) - 1)
  70.                 return new bool[,]{{field[i - 1 , j - 1], field[i - 1, j], false},
  71. {field[i, j - 1], field[i , j], false},
  72. {field[i + 1, j - 1], field[i + 1, j], false}
  73. };
  74.             return null;
  75.         }
  76.         public static bool Check(bool[,] field)
  77.         {
  78.             var result = 0;
  79.             for (var i = 0; i < 3; i++)
  80.                 for (var j = 0; j < 3; j++)
  81.                     if (field[i, j] && (i != j || j != 1))
  82.                         result += 1;
  83.             if (result == 2)
  84.                 return field[1, 1];
  85.             if (result == 3)
  86.                 return true;
  87.             return false;
  88.         }
  89.     }
  90. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top