Испытание средней сложности "запасы протеина"


#1

ВОТ ЭТО РЕШЕНИЕ Я НАШЁЛ ЗДЕСЬ НА ФОРУМЕ
for (var i = 1; i <= days; i++) {
if (i % period === 0) {
total += workDayAmount;
if (i % 7 === 6 || i % 7 === 0) {
total -= workDayAmount;
total += weekendAmount;
}
}
}
У меня такое решение тоже сразу всплыло в голове. Но вопрос, не пойму в проверке ПЕРВОЙ субботы, которая идёт в счётчике под номером 6. При остатке от деления 6 на 7 остатка не будет же 6, да и вообще остатка не будет или как??? У меня решение тормозилось как раз изза первой субботы с индексом 6


#2

При делении меньшего числа на большее не будет целой части, а остаток есть - само это число.


#3

Это я написал сам, не юзая подсказку, надеюсь поможет.

for (var i=period; i<=days; i+=period) {
 if ((i==2*period) || (i==7*period)) {
    total += weekendAmount;
    console.log(total);
    } else {
        total += workDayAmount;
        console.log(total);
      }
}

#4

Не отображается, потому что код в сообщении нужно форматировать с помощью кнопки </> на панели сверху в редакторе сообщений.


#5

Я над этим местом i % 7 === 6 тоже долго размышляла, пришла к выводу, что JS в этом случае считает остатком всё что не смог поделить, т.е. раз 6 на 7 не делится - значит 6 в остатке.)))


#6

Мой вариант -

for(var i = 1; i <= days; i++){
if(!(i%period) && (i%7 != 6) && (i%7 != 0)){
total+=workDayAmount;
} else
if ((!(i%period) && i%7 == 6) || (!(i%period) && !(i%7))){
total+=weekendAmount;
}
}


#8

var total=0;
for (i=1;i<=days;i++){
if (i%3===0){
if((i%7===0) || i%7===6)
{total = total+weekendAmount; }
else{ total = total+workDayAmount;}}}

Мое решение


#9

И еще мое решение (подсказку не юзал) П.С. Очень люблю условия сводить к переменным, а не прописывать там уравнения)

var days = 9; // Дней в периоде
var period = 3; // Как часто я ем протеин (раз в три дня)
var workDayAmount = 200; // Количество протеина в будние
var weekendAmount = 100; // Количество протеина в выходные
var total = 0;
var day = 1;
var i;
var sat;
var sun;

while (day <= days) {
i = day % period;
sat = (day + 1) % 7;
sun = day % 7;
if (!i) {
if (!sat || !sun) {
total += weekendAmount;
}
else {total += workDayAmount;}
}
day ++;
}
console.log(total);


#10

Еще вариант с остатком деления

for (var i = period; i <= days; i += period) {
  
  if (i % 7 !== 0 && (i+1) % 7 !==0) {
    total += workDayAmount;
    }
    else {
      total += weekendAmount;
      }
  }