Imprimir matriz 2D en espiral en sentido horario desde el centro

Tengo garantizado sermatriz cuadrada perfecta. Quiero comenzar en el centro de la matriz en este caso seríamatrix[2][2], Sé cómo calcular el centro(int)(dimensions / 2). Necesito mostrar el contenido de la matriz en este siguientepatrón espiral hacia afuera. Por supuesto, el algoritmo debería funcionar con cualquier matriz cuadrada perfecta. No estaba seguro de si este algoritmo ya existía y no quería reinventar la rueda.

int dimensions / 2;

21 22 23 24 25
20 7  8  9  10
19 6  1  2  11
18 5  4  3  12 
17 16 15 14 13

La salida para este ejemplo debería ser

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

Respuestas a la pregunta(4)

Su respuesta a la pregunta