Путь к молоку


#1

НЕ РАБОТАЕТ ПРОВЕРКА: Второй тест. Время 7. Ожидаю результат: На молокозавод: false, в магазин: false, на рынок: false

Ваше значение goToDairy равное false совпадает с ожидаемым значением.
Ваше значение goToStore равное false совпадает с ожидаемым значением.
Ваше значение goToMarket равное true совпадает с ожидаемым значением.

Как такое может быть?

Третий тест. Время 15. Ожидаю результат: На молокозавод: true, в магазин: false, на рынок: true

Ваше значение goToDairy равное false не совпадает с ожидаемым значением true.
Ваше значение goToStore равное false совпадает с ожидаемым значением.
Ваше значение goToMarket равное true не совпадает с ожидаемым значением false.

Или это? В этом случае он должен на завод идти?

Вообще по условию как я его понял он должен идти в ближайшую точку, а это завод если время с 8 включительно до 19 включительно кроме обеда с 13 до 14,
тогда он идет в магазин с 13(включительно) до 14, ровно в 14 он только на рынок может попасть, т.к. завод еще закрыт, а магазин уже закрыт,
с 7 включительно до 8 и с 19 до 20 включительно он может попасть на рынок. Правильно ли я все понял?

var goToDairy = false;
var goToStore = false;
var goToMarket = false;

if ( time >= 7 && time <= 20) {
goToMarket = true;
if ( (time >= 8 && time <= 19) && ( time < 13 && time > 14 ) ) {
goToMarket = false;
goToDairy = true;
}
if ( time > 13 && time < 14 ) {
goToMarket = false;
goToStore = true;
}
}

но мое решение не проходит проверку.
прошу помощи


#2

if((time >= 8 && time < 13) || (time < 19 && time > 14)){
goToDairy=true;
сам помучился,пока не выстроил логику через или(||) главное разбить на правильные промежутки(с 8 до 13)(с 14 до 19) и если время попадает в один из них срабатывает if


#3

if ( (time >= 8 && time <= 19) && ( time < 13 && time > 14 ) ) но тут же тоже самое по идее: число в диапазоне от 8 до 19, но от 13 до 14.


#4

Модифицировал код, теперь работает
if ( time >= 7 && time <= 20) {
goToMarket = true;
if ( (time >= 8 && time < 19) && ( time < 13 || time > 14 ) ) {
goToMarket = false;
goToDairy = true;
}
if ( time >= 13 && time < 14 ) {
goToMarket = false;
goToStore = true;
}
}

Основная ошибка была в первом условии вместо && между двумя условиями || надо было, но все остальное с включительно, не включительно не оч ясно было поставлено все же на мой взгляд


#5

у меня весь код в 6 строк уложился :grinning:


#6

Некорректная формулировка тестов. По условиям задания значение true должно быть записано в одну переменную. А в тексте ожидаемых значений теста почему-то бывает и два.
При этом проверка проходится, если значение true только одно.

Пример кода
var time = 15;

var goToDairy = false;
var goToStore = false;
var goToMarket = false;

if (time >= 7 && time <= 20) {
  if (time >= 8 && time < 13 || time >= 14 && time < 19) {
    goToDairy = true;
  }
  else if (time >= 9 && time < 14 || time >= 15 && time < 17) {
    goToStore = true;
  }
  else {
    goToMarket = true;
  }
} 

Просьба @GreenLera прокомментировать этот момент.


#7

это опечатка, сейчас исправлю, спасибо!


#8

готово, проверяйте


#9

Мой код прошел 2 раза проверку

if (time >= 8 && time < 19 && time !== 13 && time !== 14 ) {
goToDairy = true;
} else if (time >= 9 && time < 17 && time !== 14 && time !== 15) {
goToStore = true;
} else if (time >= 7 && time < 20) {
goToMarket = true;
} else {
goToDairy = false;
goToStore = false;
goToMarket = false;
}


#10

time !== 13 && time !== 14

time !== 14 && time !== 15

это работает в данной задаче, но мы все же период времени рассматриваем с 13 до 14 или с 14 до 15, а у Вас только отдельные часы берутся


#11
if (time > 8 && time< 13 || time > 14 && time < 19) {goToDairy = true}
 
 else if (time > 9 && time < 14 || time>15 && time < 17) {goToStore = true}
     
  else if (time >= 7 && time <= 20) {goToMarket = true}

#12

Форматируйте код перед отправкой сообщения, пожалуйста.
Кнопка </> в редакторе сообщений.


#13

OK , пасиб !!!


#14

if(time>=8 && time<19 && !(time>=13 && time<=14))
{goToDairy=true;}
else if(time>=9 && time<17 && !(time>=14 && time<=15))
{goToStore=true;}
else if(time>=7 && time<20){goToMarket=true;}