Как вывести елочку в консоли на golang?

Используя вложенные циклы необходимо вывести елочку симметричную. Задача стоит следующая: Вывод ёлочки.

Введите высоту ёлочки:
5
    *
   ***
  *****
 *******
*********

Помогите, пожалуйста, второй день не могу понять. Желательно с детальным объяснением. Я только учусь


Ответы (1 шт):

Автор решения: aksioto

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

Количество * при итерации цикла меняется на 2 - 1 3 5 .. n+2

Для формирования строки из повторяющихся символов нам понадобится функция strings.Repeat.

func printTree(height int) {
    chars := 1 // начальное кол-во * в строке
    for i := height; i > 0; i-- {
        line := strings.Repeat("*", chars) // формируем строку состоящую из *
        indent := strings.Repeat(" ", i)   // добавляем отступы
        fmt.Printf("%s%s\n", indent, line) // выводим строку в консоль
        chars += 2                         // увеличиваем кол-во звёздочек на 2
    }
}

Результат:

     *
    ***
   *****
  *******
 *********

https://go.dev/play/p/3Tn-qADePyo

→ Ссылка