Заполнение двумерного массива по спирали

Автор: | 2017-09-11

    Возьмём массив, в котором содержится пять строк и пять столбцов, заполним его по спирали  числами, начиная с 1, и выведем на экран. В первом примере массив заполняется по часовой стрелке от периферии к центру.

В консоли видим:

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

    Если в задании требуется вывести в консоль массив, заполненный от центра к периферии против часовой стрелки, возьмите приведённый выше код. Заполнять массив мы будем также (от периферии к центру), но числа по мере заполнения, будут не возрастать, а убывать.

В консоли будет:

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

    Массив был, фактически, заполнен от периферии к центру, но при выводе в консоль создаётся впечатление, что заполнялся он наоборот, от центра к периферии. Если Ваш массив квадратный (одна сторона равна другой), и в строке содержится нечётное количество элементов, тогда единица располагается в центре. При моих вариантах решения задачи сюрпризы начинаются, если массив имеет вытянутую прямоугольную форму (например 5 на 11).

55, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
54, 27, 8, 9, 10, 11, 12, 13, 14, 15, 38,
53, 26, 7, 6, 5, 4, 3, 2, 1, 16, 39,
52, 25, 24, 23, 22, 21, 20, 19, 18, 17, 40,
51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41,

    Как видим, единица расположена далеко от центрального элемента массива array [2][5]. За сим, если Вам на собеседовании необходимо заполнить массив от центра к периферии, либо постарайтесь, чтобы он имел вид 5 на 5 или 7 на 7 и т. п., либо  поищите другой вариант решения задачи.

Выводим в консоль массив, заполненный от центра к периферии по часовой стрелке.

В консоли:

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

И последний вариант, массив, заполненный от периферии к центру против часовой стрелки.

В консоли:

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

    P. S. Если Вы пытаетесь приспособить этот вариант решения задачи к другим языкам, в которых массивы заполняются мусорными числами (например, С++), то для начала заполните весь массив каким-то числом, которого в массиве точно не будет, ( -1, как вариант).