Постройка башенки
Столкнулся с такой задачкой: Построить Башню по следующему приведенному аргументу: количеству этажей (integer и always больше 0)
Пример башен:
[
' * ', -> 3 этажа
' *** ',
'*****'
]
[
' * ',
' *** ', -> 6 этажей
' ***** ',
' ******* ',
' ********* ',
'***********'
]
Входная переменная данной функции nFloors - количество этажей
public class Kata
{
public static string[] TowerBuilder(int nFloors)
{
for (int i = 0; i < nFloors; i++)
{
//Я не могу понять как обращаться к элементам строки(если это можно назвать строкой) таким образом - чтобы строилась башенка
}
return new string[0];
}
}
Что вообще происходит - даётся число этажей, nFloors, учитывая его значение производиться заполнение
string.Join(",", new [] { "*" }), string.Join(",", Kata.TowerBuilder(1)));
Или
string.Join(",", new [] { " * ", "***" }), string.Join(",", Kata.TowerBuilder(2)));
У меня ещё очень мало опыта в языке C#. Я никак не могу понять:
Как надо обращаться к этажам башенки.
Как их поставить друг на друга, чтобы вернуть новое значение строки(если это можно назвать строкой).
Если требуется больше информации для понимания - могу предоставить ещё!
Ответы (1 шт):
На самом деле задача не из самых лёгких. Если вы новичок,советую почитать про динамические типы данных, List и т.д. Но эту задачу можно сделать и обычным динам. массивом. Нам просто нужно завести массив строк, и в каждый элемент класть новую строку, которую мы делаем по заданным правилам. (пробелы, *, пробелы). Вот код решения.Советую хорошо разобраться, а не просто сдать решение:
public static string[] TowerBuilder(int nFloors)
{
string[] Result = new string[nFloors]; //Массив строк, который мы будем выводить.
string String_to_Add = string.Empty; // строка, которую мы собираемся добавлять.
int counter = nFloors;//Сколько пробелов нам нужно будет ставить
for (int i = 0; i < nFloors; i++)
{
String_to_Add = new string(' ', counter - 1); //Добавляем кол-во пробелов, сколько нужно на данной стадии построения
String_to_Add = String_to_Add + new string('*', ((i + 1) * 2) - 1); //Добавляем "*". Высчитываем по такой формуле,потому что нам нужно сначала 1, потом 3, 5, 7 , и т.д.
String_to_Add = String_to_Add + new string(' ', counter - 1); // Добавляем пробелы в конец.
counter--;
Result[i] = String_to_Add;// Добавляем в массив строк очередную строку.
}
return Result;
}