public class SpiralMatrixHelper
public static void Main(string[] args)
var matrix = GetSpiralMatrix(rowCount, colCount);
Console.WriteLine("Заполненная матрица с обходом по спирали к центру: ");
for (var i = 0; i < rowCount; i++)
for (var j = 0; j < colCount; j++)
Console.Write(matrix[i, j] + " ");
public static int[,] GetSpiralMatrix(int rowCount, int colCount)
var matrix = new int[rowCount, colCount];
bool? isPrevActionDone = null;
for (int i = 0, j = 0, k = 0; ; k++)
if (isPrevActionDone.HasValue && !isPrevActionDone.Value)
isPrevActionDone = false;
for (var m = currentCol; m < colCount - currentCol; m++, num++)
matrix[currentRow, m] = num;
currentCol = colCount - j - 1;
for (var m = i + 1; m < rowCount - currentRow; m++, num++)
matrix[m, currentCol] = num;
currentRow = rowCount - i - 1;
currentCol = colCount - j - 2;
for (var m = currentCol; m >= j; m--, num++)
matrix[currentRow, m] = num;
currentRow = rowCount - i - 1;
for (var m = currentRow; m >= i; m--, num++)
matrix[m, currentCol] = num;