|
1 | | -function checkStringLength(str, maxLength) { |
2 | | - return str.length <= maxLength; |
3 | | -} |
4 | | -checkStringLength('тест', 5); |
5 | | - |
6 | | -function isPalindrome(str) { |
7 | | - const normalizedStr = str.replaceAll(' ', '').toLowerCase(); |
8 | | - let reversedStr = ''; |
9 | | - for (let i = normalizedStr.length - 1; i >= 0; i--) { |
10 | | - reversedStr += normalizedStr[i]; |
| 1 | +function workTime(workStart, workEnd, meetingStart, meetingDuration) { |
| 2 | + const timeRegex = /^([01]?[0-9]|2[0-3]):[0-5][0-9]$/; |
| 3 | + if (!timeRegex.test(workStart) || !timeRegex.test(workEnd) || !timeRegex.test(meetingStart)) { |
| 4 | + throw new Error('Некорректный формат времени. Ожидается HH:MM.'); |
11 | 5 | } |
12 | | - return normalizedStr === reversedStr; |
13 | | -} |
| 6 | + const parseTime = (timeStr) => { |
| 7 | + const [hours, minutes = '0'] = timeStr.split(':').map(Number); |
| 8 | + return hours * 60 + minutes; |
| 9 | + }; |
14 | 10 |
|
15 | | -isPalindrome('тест'); |
| 11 | + const workStartMinutes = parseTime(workStart); |
| 12 | + const workEndMinutes = parseTime(workEnd); |
| 13 | + const meetingStartMinutes = parseTime(meetingStart); |
| 14 | + const meetingEndMinutes = meetingStartMinutes + meetingDuration; |
16 | 15 |
|
17 | | -function extractDigits(input) { |
18 | | - const str = input.toString(); |
19 | | - let result = ''; |
20 | | - for (let i = 0; i < str.length; i++) { |
21 | | - const char = str[i]; |
22 | | - if (!Number.isNaN(parseInt(char, 10))) { |
23 | | - result += char; |
24 | | - } |
25 | | - } |
26 | | - if (result === '') { |
27 | | - return NaN; |
28 | | - } |
29 | | - return parseInt(result, 10); |
| 16 | + return ( |
| 17 | + meetingStartMinutes >= workStartMinutes && |
| 18 | + meetingEndMinutes <= workEndMinutes |
| 19 | + ); |
30 | 20 | } |
31 | 21 |
|
32 | | -extractDigits('кот'); |
| 22 | +workTime('08:00', '18:00', '10:00', 90); |
0 commit comments