Ejemplo n.º 1
0
        public Timetable(List <ScheduledClass> permutation)
        {
            int size = permutation.Count + permutation.Sum(c => c.ChildClasses.Count);

            Classes = new ScheduledClass[size];

            //Fill the classes array, including all child classes
            int j = 0;

            foreach (var scheduledClass in permutation)
            {
                Classes[j] = scheduledClass;
                j++;
                foreach (var childClass in scheduledClass.ChildClasses)
                {
                    Classes[j] = childClass;
                    j++;
                }
            }

            //Calculate average start time and total number of days
            long startTimes = 0;

            for (int i = 1; i <= 5; i++)
            {
                var classes = Classes.Where(c => (int)c.TimeStart.DayOfWeek == i).OrderBy(c => c.TimeStart);

                if (classes.Any())
                {
                    NumberDaysClasses++;
                    startTimes += classes.First().TimeStart.TimeOfDay.Ticks;
                }
            }

            AverageStartTime = startTimes / NumberDaysClasses;
        }