Задачу спирального заполнения матрицы я уже описывал в этой подборке: Там есть три решения, но все они используют массив. Нет ничего плохого в использовании массива, но это приводит к следующим ограничениям: Можно ли написать простой цикл, который построчно выводит числа из матрицы, не прибегая к самой матрице, то есть вычисляя каждое число на лету? Да, у меня постоянно было ощущение, что сделать это можно, но конкретная реализация ускользала. Потому что движение по спирали порождает целую кучу противоречивых условий. В конце концов удалось сесть и формализовать задачу через набор постулатов, и вот что у меня получилось: Матрица состоит из вложенных друг в друга периметров. Если размер матрицы N*N, то её внешний периметр состоит из N клеток вправо, N-1 клеток вниз, N-1 клеток влево и N-2 клеток вверх: Формула длины периметра это N * 4 - 4. Я решил сосредоточиться только на периметре и придумать метод для трансляции любых координат (x, y) внутри матрицы на какую-то клетку этого периметр