Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // 1. Stars
- // let stars = 10
- // let stars = 100
- // let stars = 10000
- let stars = 10
- stars = Number(prompt("Stars count")).toFixed() //Запитання в 6 пункті
- // for (let i = 0; i < stars ; i++ ) {
- // console.log("*")
- // }
- while(stars != 0) {
- console.log("*")
- stars--
- }
- // 2. Numbers
- let num = Number(prompt("Put Number")).toFixed()
- while (isNaN(num) == Number.isNaN(NaN) || num < 0) { //Унеможливив написання букв та чисел менше 0
- num = Number(prompt("Put number higher than 0"))
- }
- // console.log(Number.isNaN(NaN)) - це завжди одне значення має. тобто вираз можна скоротити до
- // while (isNaN(num) || num < 0) - доречі я не впевнений, що така перевірка (isNaN(num)) корректна, але зараз це не
- // важливо.
- // Насправді зараз важливо не ускладнюючи завдань вникнути у сутність кожної з тем. Це дуже круто, що ви
- // експерементуєте, - саме так приходить досвід, та прошу для рев'ю скидати завдання у тому вигляді, як вони є на
- // порталі - не ускладнюючи.
- /*вивести на екран числа від 1 до N (де N - це число, яке введе користувач).
- Використовувати for.
- В конці не має бути коми.
- На весь код має бути лише одна команда виводу числа.
- замість for юзати while для задачі
- вивести в зворотньому порядку числа
- вивести на екран парні числа от 2 до N
- якщо читати згори до низу, та послідовно виконувати завдання, то виводити через , та не ставити її післі останнього числа
- припадає на послідовність від 1 до N, там ТАКА заміна не пройде, краще алгоритмично ставити, чи не ставити кому . Взагалі
- всі задачи на підготовчому курсі не на використання крутих джаваскриптових функцій, а на самі базові речі, іноді саму малість з алгорітмикою*/
- let numbers = ""
- while (num != 0) {
- if (num % 2 == 0) {
- numbers = numbers + num + ","
- }
- num--
- numbers = numbers.replace(",2,", ",2.")
- }
- console.log(numbers)
- // 3.Sqr
- let size = Number(prompt("sqr size")).toFixed()
- let sqr = "*"
- let h = 0
- let line = ""
- // while(h != size ) {
- // for (let w = 0; w < size -1; w++) { //Виконав без repeat для "*", але з оператором break
- // if (sqr == "*".repeat(size)) {
- // break
- // }
- // sqr = sqr + "*"
- // }
- // console.log(sqr)
- // h++
- // }
- for(let i = 0; i < size;i++) { //Прочитав про Recursive functions та зробив трошки інакшим методом
- console.log(getLine(size))
- line = ""
- }
- function getLine(size) { // це ж задачки на цикли, ви дійсно вважаєте , що використати рекурсівну функцію це те, що треба?)
- line += "*"
- if(size == 1){
- return line
- }
- return getLine(size - 1)
- }
- // 4.Tri
- let size = +prompt("Tri size").toFixed()
- let triangle = "*".repeat(size) // щодо repeat я вже писав, це тема циклів, тут немає сенсу використовувати щось інше
- for (let h = size; h > 0; h--) {
- console.log(triangle)
- triangle = triangle.substr(0, h - 1)
- }
- // 5.Tree
- let size = +prompt("Tree size").toFixed() - 1)
- let tree = "*"
- for(let h = 0; h < size; h++ ) {
- tree = " ".repeat(size - h) + "*" + "*".repeat(h*2)
- console.log(tree)
- }
- console.log(" ".repeat(size) + "*")
- // 6.Max numbers
- let num = []
- let a = 1
- while(a != 0) {
- a = Number(prompt("Put number")).toFixed() //якщо змінити Number на + то викликає помилку
- //"Uncaught TypeError: prompt(...).toFixed is not a function", чому?
- // a = +prompt("Put number"); a = (+prompt("Put number")).toFixed() - так теж працює, але не має сенсу, звісно.
- // .toFixed() - для форматуваня числа в число із встановленою кількістю знаків після крапки, тут не до чого.
- // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed
- if(a % 2 == 0) {
- num.push(a)
- }
- }
- // let max = Math.max(0, num)
- // console.log(max)
- let max = 0
- for(i = 0; i < num.length; i++) { //Виконав через цикл
- if(max < num[i]) max = num[i]
- }
- console.log(max)
- console.log(num)
- // let largestNum = num.reduce(function(prevMax, curr) { //Замінив на "prevMax щоб було зрозуміліше що виконує ця змінна"
- // return Math.max(prevMax, curr)
- // })
- // console.log(num)
- // console.log(largestNum)
- // 7.Num Sum
- let a = Number(prompt("Number А")).toFixed()
- let b = Number(prompt("Number B")).toFixed()
- let nums = []
- let variable
- let sum = 0
- // if(a < b) {
- // for(let i = a; i <= b; i++) {
- // nums.push(a++)
- // }
- // } else if (b < a) {
- // for(let i = b; i <= a; i++) {
- // nums.push(b++) //Якщо ми будемо використовувати ++b то значення числа підуть вгору на 1,
- // тому що спочатку буде додавання 1+b а потім вписуватись в массив
- // }
- // }
- if (a > b) { //Виконав умову порівняння та замінив місцями змінні коли вони не в правильному порядку
- variable = a
- a = b
- b = variable
- }
- variable = b - a // а чи знаєте спосіб як поміняти місцями дві числові змінні без участі третьої? була така задача.
- for (let i = 0; i <= variable; i++) { //Тепер цикл підходить для обох випадків
- nums.push(a++)
- sum += nums[i] //Зробив без методу reduce, за допомогою циклу
- }
- // let sum = nums.reduce((prev, curr) => prev + curr)
- console.log(nums)
- console.log(sum)
- /*до коду, що закоментований дуже погано ставляться на рев'ю, гірше тільки лишати коментований код у робочому проекті, це тому, що він породжує зайві запитаня, і всі вони потребують зайвої уваги та праці. Просто повірте, потім відчуєте це на собі.
- У своїх варіантах звісно коментуйте як вам зручно, але для рев'ю та в "продакшн" (ну поки умовно :) - тільки чистий код. Коментарі потрібні, але тільки як пояснення до коду. Ніякого закоментованого коду - це зло.
- Всі ці задачки лише для прокачки розуміння циклів, немає сенсу вирішувати їх якимся інакшим чином.
- Вашого досвіду має вистачити для швидкого проходження всіх тем, та здачи вступного. Вільний час можна порішати задачки з codewars, наприклад, буде значно більше проку, чим ви будете рекурсією зірочки малювати.
- Гарного коду.
- */
Advertisement
Add Comment
Please, Sign In to add comment