UniLecs #143. Пирамида - 2

UniLecs #143. Пирамида - 2

UniLecs

Задача: снова строим пирамиду, на этот раз порядок следующий: нужно укладывать блоки по спирали против часовой стрелки, начиная с левого нижнего угла. Верхний ярус пирамиды состоит из 1 го блока, каждый след.ярус на 2 блока больше предыдущего.

Необходимо написать программу, ктр формирует схему укладки блоков.

Входные данные: height - высота пирамиды, ктр необходимо построить, где height - натуральное число от 1 до 100.

Вывод: схема укладки блоков пирамиды: 

- в 1-й строчке номер при укладке верхнего блока;

- во 2й строке - номера блоков след.яруса

и т.д.

Пример: height = 3

Answer:

   7

  8 9 6

1 2 3 4 5

Пример: пирамида для h = 3

Идея: чисто программистская задача. Будем использовать рванный массив (в C#) для формирования блоков пирамиды от верхнего яруса до самого нижнего.

Так как заполнять матрицу будем по спирали, будем хранить порядок направления в вспомогательных переменных: left - right; bottom - top. Т.е. начинаем с нижнего левого угла (left - bottom), двигаемся до нижнего правого (right - bottom). Затем поднимаемся до вершины (top), и опускаемся до bottom - 1 уровня. Продолжаем пока не дойдем до середины пирамиды и закончим спираль из блоков.

Реализация:

C#: функции инициализации рванного массива и визуализации пирамиды
C#: функция постройки пирамиды

https://gist.github.com/unilecs/5d0b49817c41de998228c32ae6996745

Test: https://dotnetfiddle.net/tKnnxk

Report Page