using System; namespace Crown { class Program { private static int numberOfSpacesInRowOne; static void Main() { int n = int.Parse(Console.ReadLine()); //първо ще чертая горните 2 реда, които по ширина (редове) са фиксирани, променят се по дължина (колони): // по дефиниция: int numberOfRows = 2 * n - 1; //като разкараме 3те @ в ред 1 и разделим на 2, за да вземем всяка половина от спейсове (еднакви са): int numberOfSpaces = (numberOfRows - 3) / 2; string spaces = new string(' ', numberOfSpaces); Console.WriteLine($"@{spaces}@{spaces}@"); //във втори ред е същото, със следната малка модификация: numberOfSpaces--; spaces = new string(' ', numberOfSpaces); Console.WriteLine($"**{spaces}*{spaces}**"); // сега, зяпам картинката (за да направя централната и най-сложна част, последните 2 реда със същия принцип просто си ги плескам) // и забелязвам следното: при вход 8, броя на точките в лявата и в дясната част стига до 4 (демек 8/2), при вход 10, стига до 5 (пак n / 2) // тогава си казвам "добрееем" и правя следното (звездичките и спейсовете ще ги ръгам между точките някак си в цикъл и на всеки ред // ще намаляват с 1 предполагам. Освен това забелязвам, че като че ли последните 2 реда от средната част, също са фиксирани (когато броят на // паузите стане 0 все едно се обединяват звездичките - от 2 стават 1 и после следва странен ред, който е уникален, и може би и него отделно // ще принтирам: int numberOfDots = 1; numberOfSpaces -= 2; int numberOfMiddleDots = numberOfRows - 6 - numberOfSpaces * 2 - numberOfDots * 2; string dots = null; string middleDots = null; while (numberOfSpaces > 0) { spaces = new string(' ', numberOfSpaces); dots = new string('.', numberOfDots); middleDots = new string('.', numberOfMiddleDots); Console.WriteLine($"*{dots}*{spaces}*{middleDots}*{spaces}*{dots}*"); numberOfSpaces -= 2; numberOfDots++; numberOfMiddleDots = numberOfRows - 6 - numberOfSpaces * 2 - numberOfDots * 2; } //сега оттука нататъка принтирам ръчно следващия ред, в който се обединяват звездичките и изчезват спейсовете: dots = new string('.', numberOfDots); middleDots = new string('.', numberOfMiddleDots); Console.WriteLine($"*{dots}*{middleDots}*{dots}*"); // идва последният ред с точките, за който винаги в центъра има 1 точка, middleDots ще изчезне, ще се появи обаче нов стринг от звездички: numberOfDots++; dots = new string('.', numberOfDots); int numberOfStars = (numberOfRows - 3 - 2 * numberOfDots) / 2; string stars = new string('*', numberOfStars); Console.WriteLine($"*{dots}{stars}.{stars}{dots}*"); //следват последните 2 реда звездички: numberOfStars = numberOfRows; stars = new string('*', numberOfStars); for (int i = 0; i < 2; i++) { Console.WriteLine(stars); } } } }