Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- вивести трикутник
- ***
- **
- *
- */
- let triangle = +parseInt(prompt("введіть розмір трикутника")) /* іменування змінної не каже явно, що це розмір,
- неточні іменування ускладнюють читання коду, та написання також */
- for (let i = triangle; i > 0; i--) {
- for (let a = triangle; a >= 0; a--) { // підправив умову
- if (a >= i) {
- console.put(" ")
- } else {
- console.put("*")
- }
- }
- console.log() // тут варто лише переводити рядок, а всі зірки виводити в одному місці, підправив умову
- }
- /* норм рішення, але іменування не ідеальні, наскільки це важливо тримайте лонгрід: маємо спочатку
- * let triangle = +parseInt(prompt("введіть розмір трикутника")) - тут розуміємо з месаджу, що розмір
- * уявіть, що кода більше, і десь ми зустрвчаємо ваш цикл:
- * for (let i = triangle; i > 0; i--) {
- * for (let a = triangle; a >= 0; a--) // тут складніше зрозуміти, і доводиться або читати з рантаймом в голові,
- * але спочатку шукати що клали у змінну triangle. порівняйте:
- * */
- let triangleSize = +parseInt(prompt("введіть розмір трикутника"))
- for (let starNum = triangleSize; starNum > 0; starNum--) { /* можна іменувати rowNum,але тоді з нуля логічніше збільшувати
- до розміру, під поведінку зкожним рядком зменьшується від розміру до нуля підходить кількість зірок */
- for (let a = triangleSize; a >= 0; a--) { /* тут важко дати назву лічильнику, щоб це була
- position то логічніше, щоб вона теж починалася з нуля (тоді ще умову поправит треба), а як інакше назвати, щоб ваш
- код почав допомагати мені його читати, бо зараз я відчуваю себе Каштанкою у лодці, а код мені такий: "Аа-а А а"
- як можна словами назвати сутність на кожному рядку , що змінюється від розміру до нуля? Від нуля до розміру
- підішла б поточна позиція де ставимо символ, .. можливо я не правильно зрозумів ваш алгоритм , цікаво, як ви
- його писали, якими сутністями оперували, абстрактними виходить - це ж важко!)) */
- }
- /* спробую поправити як розумію ваш алгоритм */
- let triangleSize = +parseInt(prompt("введіть розмір трикутника")) // тепер де б в коді ми не прочитали таку змінну - зрозуміло що в ній.
- for (let rowNumber = 0; rowNumber < triangleSize; rowNumber++) { /* рядки від нульового до розімру трикутника, можна row
- але різниця тоді до triangle може здатися вам тонкою, хоча row буде норм тут для лічильника. Лічильникі мають підказку
- в своєї суті рахувати, перелічувати щось. */
- for (let position = 0; position < triangleSize; position++) { // можна було б ще ікс і ігрек замість рядків та позицій
- if (position >= rowNumber) { // не дуже явна залежність між рядком, позицією
- console.put("*") // і тим що треба виводити в ній.
- } else {
- console.put(" ")
- }
- }
- console.log()
- }
- /*
- Невдалі іменування ускладнюють код, а ще коли важко підібрати добре іменування - це може бути знак того, що реалізація,
- або сам алгоритм не ідеальні.
- Як можна полегшити написання коду, що має вирішувати задачу - декомпозуємо задачу на підзадачи описані простими словами:
- * отримати розмір
- * виводитити рядки розмір разів переводячи на наступний
- * на кожному рядку вивести потрібну кількість пробілів
- * на кожному рядку вивести потрібну кількість зірок
- * а коли вже є розуміння виражене словами, то писати код легше, і читатися він буде зрозуміліше.
- * */
- let numberOfSpaces = 0; // скільки потрібно вивести пробілів
- let numberOfStars = triangleSize; // скільки потрібно вивести зірок
- for (let row = 0; row < triangleSize; row++) {
- for (let space = 0; space < numberOfSpaces; space++) {
- console.put(" ")
- }
- for (let star = 0; star < numberOfStars; star++) {
- console.put("*")
- }
- numberOfStars--; // підготуємо кількості символів на наступну ітерацію
- numberOfSpaces++;
- console.log()
- }
- /* ваше рішення норм , інформація для полегшення написання коду більш складних задач
- Гарного коду!*/
Add Comment
Please, Sign In to add comment