Не трать деньги понапрасну 24/24


Ура, новая тема академии, так что представляю на Ваш суд свою версию:

С Новым Годом, работяги!
let getPrice = function (hours, isUrgency) {
  let hourlyRate = 1500;
  
  if (isUrgency) {
    hours /= 2;
    hourlyRate *= 2.5;
  }
  if (hours > 150) {
    hourlyRate -= 250;
  }
  
  return hours * hourlyRate;
} 

let getProfitableProject = function(hours, netProfitIfUrgent) {
  let urgentValue = getPrice(hours, true) - netProfitIfUrgent;
  let notUrgentValue = getPrice(hours, false);
  let urgency = 'срочный';
  let expences = urgentValue;
  
  if (urgentValue > notUrgentValue) {
    urgency = 'обычный';
    expences = notUrgentValue;
  }

  return `Выгодней ${urgency} проект. Потратишь на него ${expences}`;
}

Странно, что надо указать именно маржинальные расходы в срочном проекте, а не саму стоимость срочного проекта.

7 лайков

А let, это одно и то же, что и var?

let - это основной способ объявления переменных в новом стандарте языка Javascript начиная с 2015 года. Отличия от var есть, довольно фундаментальные. Можете попробовать самостоятельно изучить различие, но тема может показаться трудной для новичка.
Интерактивные курсы Академии основаны на старом, но самом распространенном стандарте языка - ECMAScript 5, или ES5. Ничего не мешает использовать оба варианта.

Совсем немного о стандартах

Javascript постоянно развивался и развивается сейчас.
Начиная с 2015 ежегодно появляется новая редакция языка, до этого новые редакции выходили раз в несколько лет.
Цель новых редакций - добавление новых возможностей и улучшений в язык программирования.

1 лайк

Вариант решения c ES5.

  var getPrice = function (time, urgency) {
  var fixedRate = 1500;
  
  if (urgency) {
    time /= 2;
    fixedRate *= 2.5;
    }
  
  if (time > 150) {
    fixedRate -= 250;
    }
    return time * fixedRate;
  };

var getProfitableProject = function (hours, profit) {
  var urgentProject = getPrice(hours, true) - profit;
  var notUrgentProject = getPrice(hours, false);
  var value;
  var expences;
  
  if (urgentProject < notUrgentProject) {
    value = 'срочный';
    expences = urgentProject;
    } else {
    value = 'обычный';
    expences = notUrgentProject;
    }
    
    return 'Выгодней ' + value + ' проект. Потратишь на него '+ expences;
  };
getProfitableProject(100, 2000);
4 лайка

Целый день ломал голову, что от меня нужно в этой задаче. Если бы не заглянул сюда, до меня бы так и не дошло. :sweat:

14 лайков

JS не очень хорошо объясняется здесь, сложновато воспринимается, многие изучают его в интернете по сторонним сайтам, это заметно если просмотреть коды других людей посещающих это сообщество. В кодах много того что в курсе не преподавали.
До меня бы тоже многое не дошло, если бы не это сообщество, да и после прохождения глав по JS мало чего дошло если честно.

11 лайков

Что конкретно вам сложно воспринимать?

Там слишком мало и не очень подробно объясняется, после теории те задания которые стоят, догадаться новичку как их выполнять не легко. В последние дни просматривала некоторые справочники, подбирала для себе какие лучше подойдут к яво скрипту, заглянула в JS, почитала на сторонних сайтах про него, становиться понятнее. Может что-то в теории упустила, а может задания такие были, плохо объяснялось что нужно, ну лично для меня самостоятельно выполнять задания было сложновато, многие подсматривала, не догадывалась как решить самой.
Сейчас мне нужно будет другие курсы разобрать, потом как -нибудь вернусь и попробую повторить главу про яво скрипт, разобрать что я там упустила и что именно показалось сложным. В теории изучала вроде казалось всё понятно, а вот с заданиями не сразу догадывалась как что и к чему применить, рассматривала в сообществе и пыталась выбрать полегче код с знакомыми командами, чтобы понять что к чему. А вот какие уже и не помню.
И одно но, в теории многого не хватает, хотя бы если просмотреть коды решений тех кто участвует в сообществе, то становиться ясно, что решать такие задания можно намного проще и быстрее, если в теорию добавить некоторые изменения, вернее расширить её.

11 лайков

Подписываюсь под каждым словом melli10. Теорию действительно нужно немного расшить. К тому же её было бы неплохо усложнить.
Возьмём в пример обычное задание (не вызовы). Даётся теория и дальше нужно уже выполнить задание, но, как его делать уже прописано рядом (снизу справа) и вы просто не даёте время подумать самому из-за чего я не могу поработать своей головой и подсмотреть в свой конспект (да, я конспектирую каждое задание).
Почему бы не сделать опцию, которая бы скрывала эти пошаговые решения и их можно было бы открыть только тогда, когда у тебя действительно возникают затруднения? Причём раскрытие идёт также пошагово. Не нужно раскрывать сразу всё.

7 лайков

Ну и в этом задании меня вставил в ступор к тому же и данный абзац:
“Обрати внимание, что срочный проект принесёт прибыль за то время, пока готовился бы обычный проект. Поэтому прибыль от срочного проекта нужно вычесть из его стоимости.”
Боюсь показаться уж совсем глупым, но я потратил пол дня, пытаясь понять смысл того, что здесь написано.

18 лайков

Спасибо большое за обратную связь!

Спасибо, мы учтём!

Подписываюсь под каждым словом [ [The_road_up]], который подписывается под каждым словом [melli10]. Теория сухая, неинформативная, но больше поражает чей-то “талант” объяснений. Приходится уходить на сторонние ресурсы и искать там. Понимать там. Решать там, а потом возвращаться сюда и такой аааааа, вот что вы хотели.
Вот это:
“Обрати внимание, что срочный проект принесёт прибыль за то время, пока готовился бы обычный проект. Поэтому прибыль от срочного проекта нужно вычесть из его стоимости.”
Боюсь показаться уж совсем глупым, но я потратил пол дня, пытаясь понять смысл того, что здесь написано.
— звучит как Обратите внимание, что сегодня в завтрашний день смотреть может не каждый.

15 лайков

Спасибо, что поделились. Мы это учтём.

1 лайк

Да, бредовое объяснение.

Кто подскажет, почему программа не делает проверку с выводом через console.log?
Через переменные (c return) все работает, но было задание, где через консоль выводились ответы… Может я что-то путаю?

Код
var getPrice = function(time, quick) {
  var bet = 1500;
  
  if (quick) {
    time /= 2;
    bet *= 2.5
    }
  if (time > 150) {
    bet -= 250;
    }
  return time * bet;
};

var getProfitableProject = function(time, profit) {
  var valueQuick = getPrice(time, true) - profit;
  var valueOrigin = getPrice(time, false);
  if (valueQuick < valueOrigin) {
    console.log('Выгодней срочный проект. Потратишь на него ' + valueQuick);
    }
    else { 
      console.log('Выгодней обычный проект. Потратишь на него ' + valueOrigin) 
      }
  };

нужно строку на выходе возвращать, а не в консоль писать

1 лайк

На счет “таланта” объяснять - полностью согласна. Очень косноязычно написаны задания. Судя по тому, что Вы это откомментировали аж год назад, а я читаю это сейчас и вижу, что НИЧЕГО ( @sasha_sm !) не изменилось за год, в очередной раз думаю, стоит ли идти сюда на интенсив на JS.

4 лайка

А, кстати, интересно, Раздел Знакомство с JavaScript писал другой автор? Там абсолютно все понятно, хотя новички до этого в глаза не видели ни переменных, ни тем более браузерный JS :thinking:

6 лайков

Ну она же писала, что учтёт. Никто не говорил, что что-то будет изменяться.

3 лайка