Advertisement
viraco4a

Stars

Mar 2nd, 2018
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.29 KB | None | 0 0
  1. using System;
  2.  
  3. namespace Crown
  4. {
  5. class Program
  6. {
  7. private static int numberOfSpacesInRowOne;
  8.  
  9. static void Main()
  10. {
  11. int n = int.Parse(Console.ReadLine());
  12. //първо ще чертая горните 2 реда, които по ширина (редове) са фиксирани, променят се по дължина (колони):
  13. // по дефиниция:
  14. int numberOfRows = 2 * n - 1;
  15. //като разкараме 3те @ в ред 1 и разделим на 2, за да вземем всяка половина от спейсове (еднакви са):
  16. int numberOfSpaces = (numberOfRows - 3) / 2;
  17. string spaces = new string(' ', numberOfSpaces);
  18. Console.WriteLine($"@{spaces}@{spaces}@");
  19. //във втори ред е същото, със следната малка модификация:
  20. numberOfSpaces--;
  21. spaces = new string(' ', numberOfSpaces);
  22. Console.WriteLine($"**{spaces}*{spaces}**");
  23. // сега, зяпам картинката (за да направя централната и най-сложна част, последните 2 реда със същия принцип просто си ги плескам)
  24. // и забелязвам следното: при вход 8, броя на точките в лявата и в дясната част стига до 4 (демек 8/2), при вход 10, стига до 5 (пак n / 2)
  25. // тогава си казвам "добрееем" и правя следното (звездичките и спейсовете ще ги ръгам между точките някак си в цикъл и на всеки ред
  26. // ще намаляват с 1 предполагам. Освен това забелязвам, че като че ли последните 2 реда от средната част, също са фиксирани (когато броят на
  27. // паузите стане 0 все едно се обединяват звездичките - от 2 стават 1 и после следва странен ред, който е уникален, и може би и него отделно
  28. // ще принтирам:
  29. int numberOfDots = 1;
  30. numberOfSpaces -= 2;
  31. int numberOfMiddleDots = numberOfRows - 6 - numberOfSpaces * 2 - numberOfDots * 2;
  32. string dots = null;
  33. string middleDots = null;
  34. while (numberOfSpaces > 0)
  35. {
  36. spaces = new string(' ', numberOfSpaces);
  37. dots = new string('.', numberOfDots);
  38. middleDots = new string('.', numberOfMiddleDots);
  39. Console.WriteLine($"*{dots}*{spaces}*{middleDots}*{spaces}*{dots}*");
  40. numberOfSpaces -= 2;
  41. numberOfDots++;
  42. numberOfMiddleDots = numberOfRows - 6 - numberOfSpaces * 2 - numberOfDots * 2;
  43. }
  44. //сега оттука нататъка принтирам ръчно следващия ред, в който се обединяват звездичките и изчезват спейсовете:
  45. dots = new string('.', numberOfDots);
  46. middleDots = new string('.', numberOfMiddleDots);
  47. Console.WriteLine($"*{dots}*{middleDots}*{dots}*");
  48. // идва последният ред с точките, за който винаги в центъра има 1 точка, middleDots ще изчезне, ще се появи обаче нов стринг от звездички:
  49. numberOfDots++;
  50. dots = new string('.', numberOfDots);
  51. int numberOfStars = (numberOfRows - 3 - 2 * numberOfDots) / 2;
  52. string stars = new string('*', numberOfStars);
  53. Console.WriteLine($"*{dots}{stars}.{stars}{dots}*");
  54. //следват последните 2 реда звездички:
  55. numberOfStars = numberOfRows;
  56. stars = new string('*', numberOfStars);
  57. for (int i = 0; i < 2; i++)
  58. {
  59. Console.WriteLine(stars);
  60. }
  61. }
  62. }
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement