Вывести расписание звонков каждого урока на весь учебный день

В учебном заведении задается начало учебного дня, длительность урока, длительность обычного и большого перерыва (и место большого перерыва в расписании), количество уроков. Вывести расписание звонков каждого урока на весь учебный день. Сделать на языке JavaScript, я так понимаю тут через массивы и строки.


Ответы (1 шт):

Автор решения: Jackson

const schedule = createSchedule("9:00", 45, 15, 75, 3, 5);
console.log(schedule);

function createSchedule(startTime, lessonDuration, breakDuration, bigBreakDuration, bigBreakPlace, lessonsCount) {
  let startLessonTime = getStartTimeInMinutes(startTime);

  const lessons = [];

  for (let lessonOrder = 1; lessonOrder <= lessonsCount; lessonOrder++) {
    const finishLessonTime = startLessonTime + lessonDuration;

    lessons.push({
      order: lessonOrder,
      startTime: minutesToDaytime(startLessonTime),
      finishTime: minutesToDaytime(finishLessonTime),
    });

    const breakTime = (lessonOrder === bigBreakPlace) ? bigBreakDuration : breakDuration;

    startLessonTime = finishLessonTime + breakTime;
  }

  return lessons;
}

function minutesToDaytime(timeInMinutes) {
  const hours = Math.floor(timeInMinutes / 60);
  const minutes = timeInMinutes % 60;
  const prettyMinutes = minutes < 10 ? '0' + minutes : minutes;
  const result = hours + ':' + prettyMinutes;

  return result;
}

function getStartTimeInMinutes(time) {
  let resultTime = time;

  if (typeof time === 'string') {
    if ( time.split(':').length > 1 ) {
      const [hours, minutes] = time.split(':');

      if (isNaN(+hours) || isNaN(+minutes)) {
        throw 'Incorrect Time String (should be like "9:30")'
      }

      resultTime = +hours * 60 + +minutes;
    }
  }

  if (isNaN(+resultTime)) {
    throw 'incorrect type of time, (should be string like "9:30") or number (countOfMinutesFromStartDay)';
  }

  return resultTime;
}

→ Ссылка