Вывести расписание звонков каждого урока на весь учебный день
В учебном заведении задается начало учебного дня, длительность урока, длительность обычного и большого перерыва (и место большого перерыва в расписании), количество уроков. Вывести расписание звонков каждого урока на весь учебный день. Сделать на языке 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;
}