public static void Main()
var matrix = RandomMatrix(size, size, 0, 9);
private static void Rotate(int[][] matrix,int n){
for(var layer=0;layer < n/2; ++layer){
Console.WriteLine($"first: {first} last: {last}");
for(var i=first; i < last; ++i){
var top= matrix[first][i];
Console.WriteLine($"i:{i} offset: {offset}");
matrix[first][i] = matrix[last - offset][first];
matrix[last-offset][first] = matrix[last][last - offset];
matrix[last][last-offset] = matrix[i][last];
private static readonly Random RandomIntNumbers = new Random();
public static int RandomInt(int n)
return RandomIntNumbers.Next(n);
public static int RandomIntInRange(int min, int max)
return RandomInt(max + 1 - min) + min;
public static int[][] RandomMatrix(int m, int n, int min, int max)
int[][] matrix = new int[m][];
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
matrix[i][j] = RandomIntInRange(min, max);
public static void PrintMatrix(int[][] matrix)
for (int i = 0; i < matrix.Length; i++)
for (int j = 0; j < matrix[i].Length; j++)
if (matrix[i][j] < 10 && matrix[i][j] > -10)
if (matrix[i][j] < 100 && matrix[i][j] > -100)
Console.Write(" " + matrix[i][j]);