public static void Main()
var Matrix = SpiralMatrix.GetMatrix(9);
for (int i = 0; i < Matrix.GetLength(0); i++)
for (int j = 0; j < Matrix.GetLength(1); j++)
Console.Write(Matrix[i, j].ToString("D2") + " ");
public class SpiralMatrix
public static int[,] GetMatrix(int size)
int[,] Matrix = new int[size, size];
int currentLineLength = size;
int currentDirection = 0;
int[] dY = [0, 1, 0, -1];
int[] dX = [1, 0, -1, 0];
while (currentLineLength > 0)
for (int i = 0; i < currentLineLength; i++)
Matrix[y, x] = currentValue++;
if (i + 1 < currentLineLength)
y += dY[currentDirection];
x+= dX[currentDirection];
currentDirection = (currentDirection + 1) % 4;
y += dY[currentDirection];
x += dX[currentDirection];
if (currentDirection % 2 == 1) currentLineLength--;