namespace Library; public class Calculations { public static string[] AvailablePeriods( TimeSpan[] startTimes, int[] durations, TimeSpan beginWorkingTime, TimeSpan endWorkingTime, int consultationTime) { var busy = new List<(DateTime Start, DateTime End)>(); for (int i = 0; i < startTimes.Length; i++) { var start = DateTime.Today.Add(startTimes[i]); var end = start.AddMinutes(durations[i]); busy.Add((start, end)); } var workStart = DateTime.Today.Add(beginWorkingTime); var workEnd = DateTime.Today.Add(endWorkingTime); var result = new List(); var current = workStart; while (current.AddMinutes(consultationTime) <= workEnd) { var slotEnd = current.AddMinutes(consultationTime); bool isOverlapping = busy.Any(b => current < b.End && slotEnd > b.Start ); if (!isOverlapping) { result.Add($"{current:HH:mm}-{slotEnd:HH:mm}"); } current = slotEnd; } return result.ToArray(); } }