Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement