Берете бумажку, рисуете на ней нужный вам спиральный массив. Внимательно на нее смотрите.
Выписываете прямые куски - какой они длины, в какую сторону вращаются. Ищите паттерн (например в спиральном массиве из центра длины кусков: 1, 1, 2, 2, 3, 3, ...).
Реализуете его. Внешний цикл работает пока все числа не поставились. Внутри пересчитываете по паттерну длину и направление прямого куска и запускаете цикл от текущей позиции вдоль направления - ставьте числа нужное количество раз.
Для реализации поворота храните текущее направление в виде двух переменных dx, dy. Одна из них +-1, а другая 0. Для поворота против часовой стрелки делаете (dx, dy) = (-dy, dx)