def find_valid_schedules(course_list, valid_schedules): '''Finds all possible schedule combinations of the courses in course_list All courses in the list will be in each schedule Parameters: course_list (Course[]): list of the Courses to be put into the schedules valid_schedules (Sections[]): list of valid Schedules Returns: Schedule[]: list of schedules with the required courses ''' new_schedules = [] if len(course_list) == 0: return valid_schedules course = course_list.pop() if len(valid_schedules) == 0: for section in course.sections: new_schedule = Schedule() new_schedule.addSection(section) new_schedules.append(new_schedule) else: for schedule in valid_schedules: for section in course.sections: new_schedule = copy.deepcopy(schedule) try: new_schedule.addSection(section) new_schedules.append(new_schedule) except ScheduleError: pass except: print("Error in find_rc_options()") if len(new_schedules) == 0: raise NoSolutionsError return find_valid_schedules(course_list, new_schedules)