Длительность прогулки.


#1

что скажите?

var temperature = 20;
var itsRaining = false;

var minutes;

if (itsRaining || temperature < 0 || temperature > 35) {
minutes = 0;
}

else if (temperature <= 20) {
minutes = 20 + (temperature - 20);
}

else if (temperature >= 20) {
minutes = 20 - (temperature - 20);
}

else if (temperature === 20) {
mimnutes = 20;
}


#2

Последние 2 строчки можно убрать. При 20 градусах формулы и так дадут 20 минут.

if (itsRaining || temperature < 0 || temperature > 35) {
minutes = 0;
} else if (temperature <= 20) {
minutes = 20 - (20 - temperature);
}else if (temperature >= 20) {
minutes = 20 + (20 - temperature);
}


#3

спасибо) но так для общей картины что ли лучше)


#4

Мой первый вариант получился такой:

var temperature = 20;
var itsRaining = false;

var minutes;

if (!itsRaining) {
  if (temperature >= 0 || temperature <= 35) {
    if (temperature <= 20) {
      minutes = temperature;
      }
    if (temperature > 20) {
      minutes = 20 - (temperature - 20);
      }
    } 
    if (temperature < 0 || temperature > 35) {
      minutes = 0;
      }
  } else {
    minutes = 0;
    }

console.log('Длительность прогулки: ' + minutes + ' минут.');

Много кода, за мудрено получилось.


#5

Второй вариант, подсмотрел ваш:

var temperature = 20;
var itsRaining = false;

var minutes;

if (itsRaining || temperature < 0 || temperature > 35) {
  minutes = 0;
  } else 
if (temperature <= 20) {
  minutes = temperature;
  } else 
if (temperature > 20) {
  minutes = 20 - (temperature - 20);
  }

console.log('Длительность прогулки: ' + minutes + ' минут.');

Меньше кода, все просто и логично. Почему сразу в голову не приходят простые решения. :confused:


#6

Чуть покороче :slight_smile:

Длительность прогулки v2
console.log('Программа для расчета идеальной длительности прогулки');

var temperature = 20;
var itsRaining = false;
var minutes;

if (itsRaining || temperature < 0 || temperature > 35) {
  minutes = 0;
}else if (temperature <= 20) {
  minutes = temperature;
}else {
  minutes = 20 - (temperature - 20);
}

console.log('Идеальное время для прогулки - ' + minutes + ' минут, Сэр!')

#7

Есть ещё и такой вариант

var temperature = 35;
var itsRaining = false;
var minutes;
if (itsRaining || temperature > 35 || temperature <= 0){
minutes = 0;
}else if (temperature < 35 || temperature > 0){
minutes = 20 - (Math.abs(20 - temperature));
}
console.log(minutes);


#8

Самый короткий вариант))

var temperature = 20;
var itsRaining = false;
var minutes;
var deviation = temperature - 20;
if (temperature <= 0 || temperature > 35 || itsRaining) {
minutes = 0;
}
else {
minutes = 20 - Math.abs(deviation);
}


#9

я смотрю тут никто особо не любит переменными пользоваться новыми в процессе решения)


#10

else if и Math.abs() во второй главе не проходили, поэтому у меня так получилось:

var temperature = 20;
var itsRaining = false;

var minutes;

minutes = 20;

if (!itsRaining && temperature > 0 && temperature < 35) {
  if (temperature > 20) {
    minutes = minutes - (temperature - 20);
  }
  if (temperature < 20) {
    minutes = temperature;
  }
  
} else {
  minutes = 0;
}

я могу и короче, в одну строку)) но мы это не проходили в этой главе

var temperature = 20, itsRaining = false, minutes = (itsRaining || temperature < 0 || temperature > 35) ? 0 : 20 - Math.abs(20 - temperature);

#11

если уж гнаться за краткостью, то вот так короче :joy:

var temperature = 20;
var itsRaining = false;

var minutes = (itsRaining || temperature < 0 || temperature > 35) ? 0 : 20 - Math.abs(20 - temperature);