KrasimiraGeorgieva

10. Diamond, 06. Drawing Figures with Loops

Feb 13th, 2018
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.64 KB | None | 0 0
  1. <?php
  2. $n = intval(readline());
  3. $starsInTop = null;
  4. if ($n % 2 == 1) {
  5.     $starsInTop = 1;
  6. } else {
  7.     $starsInTop = 2;
  8. }
  9.  
  10. //Top part
  11. $numberOfDashesInTop = floor(($n - $starsInTop) / 2);
  12. $dashes = str_repeat('-', $numberOfDashesInTop);
  13. $stars = str_repeat('*', $starsInTop);
  14. echo "$dashes" . "$stars" . "$dashes\n";
  15.  
  16. //Mid part
  17. $numberOfDashesBetweenStars = 0;
  18. if ($n % 2 == 0) {
  19.     $numberOfDashesBetweenStars = 2;
  20. } else {
  21.     $numberOfDashesBetweenStars = 1;
  22. }
  23. $numberOfDashesPerSide = floor(($n - 2 - $numberOfDashesBetweenStars) / 2);
  24.  
  25. $upperPartHeight = 0;
  26. if ($n % 2 == 1) {
  27.     $upperPartHeight = $n / 2;
  28. } else {
  29.     $upperPartHeight = (floor($n / 2) - 1);
  30. }
  31.  
  32. for ($i = 1; $i <= $upperPartHeight; $i++) {
  33.     $dashesPerSide = str_repeat('-', $numberOfDashesPerSide);
  34.     $dashesBetweenStars = str_repeat('-', $numberOfDashesBetweenStars);
  35.     echo "$dashesPerSide*$dashesBetweenStars*$dashesPerSide\n";
  36.  
  37.     $numberOfDashesPerSide--;
  38.     $numberOfDashesBetweenStars += 2;
  39. }
  40.  
  41. $numberOfDashesPerSideDown = 1;
  42. $numberOfDashesBetweenStarsDown = ($n - 4);
  43. $downPartHeight = $upperPartHeight - 1;
  44.  
  45. for ($i = 1; $i <= $downPartHeight; $i++) {
  46.     $dashesPerSideDown = str_repeat('-', $numberOfDashesPerSideDown);
  47.     $dashesBetweenStarsDown = str_repeat('-', $numberOfDashesBetweenStarsDown);
  48.     echo "$dashesPerSideDown*$dashesBetweenStarsDown*$dashesPerSideDown\n";
  49.  
  50.     $numberOfDashesPerSideDown++;
  51.     $numberOfDashesBetweenStarsDown -= 2;
  52. }
  53.  
  54. //Down part
  55. if ($n > 2) {
  56.     $dashes = str_repeat('-', $numberOfDashesInTop);
  57.     $stars = str_repeat('*', $starsInTop);
  58.     echo "$dashes" . "$stars" . "$dashes\n";
  59. }
Advertisement
Add Comment
Please, Sign In to add comment