Timkor

tree

Apr 22nd, 2021 (edited)
223
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. let size = +prompt("Вкажіть Розмір")
  2.  
  3. //let b // створимо прямо в форі локально, а ще й назовем стандартненько.
  4. // let star = "*" // поки норм, але далі це буде рядок із зірок, тому іменування star не підходить
  5. let starLine = "*"; // рядок що буде містити потрібну кількість зірок
  6. let branchEmptySpaceLine = "" // рядок що буде містити потрібну кількість пробілів
  7. let space2 = " " // рядок можна отримати в блоці де створюємо відступи зліва, можливе іменувати trunkEmptySpaceLine
  8. let counter = 0 // просто лічильник з гордим іменем
  9. let wood = size - 1 // lowBranchHalfSize ? treeWidthHalfSize? trunkIndentation? Щось я сьогодні не в настрої для добрих іменувань
  10. let i = 0 // створимо поближче до місця використання, назовемо звичніше - і (було а)
  11. while (i < size) {
  12.     // блок де створюємо відступи зліва. Що не ефективно - блок виконається лише раз, але сидить в середені циклу. Краще винести
  13.     while (counter < size) { // зліва є один зайвий пробіл, можна прибрати.)
  14.         branchEmptySpaceLine = branchEmptySpaceLine + " "
  15.         counter++
  16.  
  17.     }
  18.     console.log(branchEmptySpaceLine + starLine) // виводимо готовий рядок: потрібна кількість пробілів та зірок, та переводимо строку.
  19.     branchEmptySpaceLine = branchEmptySpaceLine.slice(1) // з кожним рядком кількість пробілів зменшується на один
  20.     starLine = starLine + "**" // з кожним рядком кількість зірочок збільшується на дві
  21.     i++
  22. }
  23. /* створюємо пробіли до стовбура*/
  24. for (let i = 0; i < wood; i++) {
  25.     space2 = space2 + " "
  26. }
  27. console.log(space2 + "*") // малюємо стовбур
  28. /*
  29. Порефакторив трохи, змінив деякі іменування.
  30. Додав коментарі, бо код був схожий на ребус.
  31. Відформатував відповідно стилю. Стиль то не про красоту, то про взаємоповагу до коллег та розуміння вартості часу.
  32. Крапки з комою на вашому сумлінні, не всі мп дозволяють нехтувати, Java б навіть не почала компілюватися, поки ви всі не розставили)
  33. Норм рішення. Можна робити не створюючи готовий рядок-гілку (branch) тоді буде більш по цикло-учнівсько-алгоритмічному:
  34. для кожної гілки створювати циклом лівий простір, також для кожної гілки створювати саму гілку із зірок також в циклі.
  35. Ще можна кожний символ виводити одразу в консоль, не складати в змінну.
  36. Але у вас більш ефективно з деяких міркувань, і наприклад для кодварс потрібно саме
  37. до строки складати всю ялинку, а потім повертати з функції ту строку-ялинку, але там ще праві пробіли потрібні, а стовбур ні.
  38.  
  39. Псевдокод звичніше такий :
  40. приймаємо розмір
  41. готуємо кількість зірок та пробілів на верхівці ялини
  42. цикл по розміру
  43.     виводимо потрібну кількість лівих пробілів (бажано циклом, бо ж тема цикли)
  44.     виводимо потрібну кількість зірок (теж циклом)
  45.     (праві пробіли для кодварс)
  46.     готуємо кількість зірок та пробілів для наступного рядку-гілці
  47.     переводимо рядок
  48. кінець циклу
  49. пінь малюємо.
  50.  
  51. там де "виводимо" та "переводимо" - там можна  дописувати до змінної, перевод рядку теж можна записати- \n
  52.  
  53. Орг.питання: раджу зазирнути у закріплені повідомлення зіро чату.
  54. Зручно коди є лінк на завдання у пасті, про коментарі та стиль я вже казав: не завжди є багато часу на ці речі, і коли
  55. студент нехтує ними, то виникає дискомфорт, та бажання відкласти ревью, а потім усвідомлюєш, що можна було б більше поспілкуватися на алгоритмичні теми, щось про ефективність коду, ну або ще щось цікавеньке. Забирають час=енергію такі прості але обов'язкові речі,точніше їхня відсутність.
  56. Гарного коду!)
  57.  */
  58.  
RAW Paste Data