Какой сегодня день? - решение


#1
var getDayOfWeek = function(w, d){
  var y = 0
  var t = 0
  if (w=='понедельник'){y=0}
  else if (w=='вторник'){y=1}
  else if (w=='среда'){y=2}
  else if (w=='четверг'){y=3}
  else if (w=='пятница'){y=4}
  else if (w=='суббота'){y=5}
  else if (w=='воскресенье'){y=6}
  
  t=((y+d)%7)
  
  if (t==1){return 'понедельник'}
  else if (t==2){return 'вторник'}
  else if (t==3){return 'среда'}
  else if (t==4){return 'четверг'}
  else if (t==5){return 'пятница'}
  else if (t==6){return 'суббота'}
  else if (t==0){return 'воскресенье'}
 
}

#2

“о мои глоза!” ©

@juwain жалоба на изнасилование в глаза принимается модераторами?


#3

Поправил форматирование, получше? :grinning:


#4

та у него еще переменные из одной литеры!
image


#5

Автор, идея конечно нормальная, но реализация просто жесть. Вы главы про циклы и массивы просто пролистали что-ли? Вот мой вариант реализации, идея одинаковая у нас.

var getDayOfWeek=function (dayWeek,number){
  var week=['понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота', 'воскресенье'];
  var stMounth;
  for (var i=0;i<=6;i++)
  {
      if (week[i]==dayWeek) {stMounth=i-1;break;}
  }
  var t=((stMounth+number)%7);
  return week[t];
}

#6
for (var i=0;i<=6;i++)
  {
      if (week[i]==dayWeek) {stMounth=i-1;break;}
  }

Зачем цикл, если есть .indexOf() ?


#7
My solution

const days = [‘понедельник’, ‘вторник’, ‘среда’, ‘четверг’, ‘пятница’, ‘суббота’, ‘воскресенье’];
const getDayOfWeek = (firstDay, searchDay) => days[(days.indexOf(firstDay) + searchDay - 1) % 7];


#9

О боги! Неужели я сделал это.
Не знаю почему, но на этой задаче меня заклинило основательно, я уже все остальные вызовы JS сделал, но вот к этой задаче подходил 4 раза и только на 4-ый раз всё же решил.
Сперва почти заставил работать программу (3 из 4 тестов проходили) с двумя циклами в предположении, что искомый день можно найти с помощью разницы числом месяца и ближайшем к нему числом месяца, делящимся нацело на 7, после безуспешно пытался заставить работать этот алгоритм и только потом до меня дошло, что остаток от деления можно использовать напрямую.

indexOf(), объекты и списки, как я понял, здесь использовать нежелательно.

Решение

var getDayOfWeek = function (day, num) {
var a = 0;
var b = 0;
switch (day) {
case ‘понедельник’:
a = 1;
break;
case ‘вторник’:
a = 2;
break;
case ‘среда’:
a = 3;
break;
case ‘четверг’:
a = 4;
break;
case ‘пятница’:
a = 5;
break;
case ‘суббота’:
a = 6;
break;
case ‘воскресенье’:
a = 7;
break;
};

var ost = num % 7;
b = a + (ost - 1);

switch (b) {
case 1: return ‘понедельник’;
case 2: return ‘вторник’;
case 3: return ‘среда’;
case 4: return ‘четверг’;
case 5: return ‘пятница’;
case 6: return ‘суббота’;
case 7: return ‘воскресенье’;
}
}