Timkor

booleanMarathon

Jan 18th, 2021 (edited)
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /* Задача. Км на день.
  2.  
  3. Спитати скільки КМ людина проходить в средньому пішки на день,
  4. якщо до 3 включно, то написати їй "мало",
  5. якщо від 4х і вище - "красавчик"!
  6. */
  7.  
  8. let dest = +prompt(`Людина, скільки КМ в средньому пішки на день ти проходиш (відстань до холодильника не враховується)?`)
  9. // чому це не враховується? по суті всі шляхи ведуть до нього.. а ще там є лампочка, щоб можна було завітати і вночі.)
  10. // читабельність буде краще, якщо ім'я змінної не скорочувати, виключення  - загальновідомі скорочення.
  11. console.log(dest);
  12. if (dest < 0) {
  13.     console.log('Рух у зворотньому напрямку це теж рух') // саме тому кілометраж не залежить від напрямку руху)
  14. }
  15. else if (dest <= 3) {
  16.     console.log('Мало')
  17. }
  18. else { //вважаемо шо юзер ввів ціле число, тобто більше трьох то вже 4 або більше
  19.     console.log('Красавчег')
  20. }
  21.  
  22. /* Задача. Км на день.
  23. аналогічно задачі км на день
  24. {
  25. Спитати скільки КМ людина проходить в средньому пішки на день,
  26. якщо до 3 включно, то написати їй "мало",
  27. якщо від 4х і вище - "красавчик"!    
  28. }
  29. але якщо від 20 і вище, написати "марафонець!!".
  30.  
  31. в задачі важливо виводити лише один напис з 3х, не можна не виводити нічого, або виводити одразу два.
  32. розв’яжіть задачу по-різному:
  33. використовуючи &&
  34. використовуючи else
  35. не використовуючи ні && ні else
  36. */
  37. let distance = +prompt(`Людина, скільки КМ в средньому пішки на день ти проходиш (відстань до холодильника не враховується)?`)
  38. let littleDistance = 3;
  39. let normalDistance = 20;
  40.  
  41. // Варіант 1, лише &&
  42. /*  ви кажете "лише &&" а використовуєте і оператор присвоювання, і оператор менше, і логічне ні (інверсію),  - насправді, за умовою ТЗ треба використовувати оператор if, бо ж тема що на неї ці задачі саме про нього,
  43. ну і разом з використанням оператора if враховувати додаткові умови. Додаткові умови розраховані таким чином, щоб можна було отримати досвід у різних варіантах рішень, кожне з яких має сенс і може бути застосовано у майбутньому. Як я розумію вони вам не здалися цікавими, тому ви змінили собі задачу - це норм. Коли ми щось міняємо собі це норм, коли іншим - не дуже) Це я натякаю, що рев'ювати такі рішення не дуже легко, і не тільки тому, що у кода погана  читабельність, а в першу чергу тому, що важко збагнути рівень ваших знань та які в них є прогаїни, а саме це важливо щоб їх заповнити.  */
  44. let littleMovement = (distance <= littleDistance);
  45. let normalMovement = (distance < normalDistance) && !littleMovement;
  46. let manyMovement = !normalMovement && !littleMovement; // а так можна записати: !(normalMovement || littleMovement)
  47. let variant1 = ''; // іменування не пояснює для чого буде використана змінна, а лише те, де вона використана, що зайве.
  48.  // можна було надати дефолтне значення "мало",
  49. (littleMovement) && (variant1 = 'Мало'); // важливо розуміти, що такий код важко читати та підтримувати.
  50. (normalMovement) && (variant1 = 'Красавчег');
  51. (manyMovement) && (variant1 = 'Марафонець!');
  52. console.log(`Вариант 1 = ${variant1}`);
  53.  
  54. // порожні рядки можуть також сприяти читабельності
  55. // Варіант 2, if else - знов таки, сказано ж в умові "використовуючи else" - а ви іф заюзали)) "Рішення неможливе" - така
  56. // відповідь більш відповідала б вашому підходу, ні?))
  57. let variant2 = '';
  58. if (distance <= littleDistance) {
  59.     variant2 = 'Мало'
  60. }
  61. else if (distance < normalDistance) {
  62.     variant2 = 'Красавчег'
  63. }
  64. else {
  65.     variant2 = 'Марафонець!'
  66. }
  67. console.log(`Вариант 2 = ${variant2}`);
  68.  
  69. // 3-й варіант, не використовуючи ні && ні else ні if
  70. let variant3 = '';
  71. !(distance >= normalDistance) || (variant3 = 'Марафонець!');
  72. !(distance < normalDistance) || (variant3 = 'Красавчег');
  73. !(distance <= littleDistance) || (variant3 = 'Мало');
  74. console.log(`Вариант 3 = ${variant3}`);
  75.  
  76. // 4-й вариант з тернарним операторов
  77. let variant4 = '';
  78. variant4 = ((distance <= littleDistance) ? 'Мало' :
  79.     ((distance < normalDistance) ? 'Красавчег' : 'Марафонець!'));
  80. console.log(`Вариант 4 = ${variant4}`);
  81. /*
  82. норм прошарилися в логічних умовах,
  83. Дивує те, що ви в мене перепитали перед тим як скинути код чи потрібне використання іфу, і я відповів, нагадаю:
  84.  
  85. ви
  86. Не зовсім зрозуміло це
  87. використовуючи ні && ні else
  88. Тобто if допускається використовувати?
  89.  
  90. я
  91. так, використовуючи саме тільки оператори if - на мою думку це найцікавіше.
  92.  
  93. ви
  94. Я вже зовсім без if намагався :))))
  95.  
  96. я
  97. багато хто робить тернарним оператором, але ж це просто синтаксис іфа з елсом.
  98.  
  99. тож.. рішення з самим тільки іфом не зробили, хех..
  100. Гарного коду!)
  101. */
Add Comment
Please, Sign In to add comment