UniLecs #143. Пирамида - 2
UniLecsЗадача: снова строим пирамиду, на этот раз порядок следующий: нужно укладывать блоки по спирали против часовой стрелки, начиная с левого нижнего угла. Верхний ярус пирамиды состоит из 1 го блока, каждый след.ярус на 2 блока больше предыдущего.
Необходимо написать программу, ктр формирует схему укладки блоков.
Входные данные: height - высота пирамиды, ктр необходимо построить, где height - натуральное число от 1 до 100.
Вывод: схема укладки блоков пирамиды:
- в 1-й строчке номер при укладке верхнего блока;
- во 2й строке - номера блоков след.яруса
и т.д.
Пример: height = 3
Answer:
7
8 9 6
1 2 3 4 5
Идея: чисто программистская задача. Будем использовать рванный массив (в C#) для формирования блоков пирамиды от верхнего яруса до самого нижнего.
Так как заполнять матрицу будем по спирали, будем хранить порядок направления в вспомогательных переменных: left - right; bottom - top. Т.е. начинаем с нижнего левого угла (left - bottom), двигаемся до нижнего правого (right - bottom). Затем поднимаемся до вершины (top), и опускаемся до bottom - 1 уровня. Продолжаем пока не дойдем до середины пирамиды и закончим спираль из блоков.
Реализация:
https://gist.github.com/unilecs/5d0b49817c41de998228c32ae6996745