Путь к молоку. Понимаю, что на верном пути, но где-то что-то не так

`var time = 13;

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

if ((time >= 9 && time < 14) || (time > 15 && time < 17)) {
goToStore = true;
console.log(‘идём в магазин’);
}
else
if ((time >= 8 && time < 13) || (time > 14 && time < 19)) {
goToDairy = true;
console.log(‘идём на молокозавод’);
}
else
if (time >= 7 && time < 20) {
goToMarket = true;
console.log(‘идём на рынок’);
}

else {
goToDairy = false;
goToStore = false;
goToMarket = false;
console.log(‘В это время все магазины закрыты’);
}`

сразу неправильно, т.к. неверно указаны интервалы.
в магазин мы ходим только с 13 до 14.
на завод ходим во все время его работы, кроме с 13 до 14, когда ходим в магаз
на рынок ходим за час до завода и час после завода.

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

мне проще сделать много интервалов, например:
от 7 до 8 или с 19 до 20
от 8 до 13 или с 14 до 19
от 13 до 14
и один раз задать каждому такому условию переменную.

моё рабочее
if ((time >= 7 && time <8) || (time >= 19 && time < 20)) {goToMarket = true;}
if ( (time >= 8 && time <13) || (time >= 14 && time <19) ) {goToDairy = true;} 
if (time >= 13 && time <14) {goToStore = true;}
без условий уабче
goToDairy = time >= 8 && time < 13 || time >= 14 && time < 19;
goToStore = time >= 13 && time < 14;
goToMarket = time >= 7 && time <8 || time >= 19 && time < 20;
2 лайка

Я выставил проверки в порядке близости, поэтому мудрить с интервалами не понадобилось: в магазин Кекс пойдёт, только если закрыт завод, а на рынок… ну, сами понимаете.
Дополнительные скобки в проверках лишние, так как у && приоритет выше.

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;
}

1 лайк