Я работаю над некоторыми функциями от имени учителя, которые группируют студентов в команды. С этой целью я ищу помощи в определении эффективного способа создания всех возможных командных комбинаций, которые соответствуют следующим критериям:
- Все студенты представлены в команде, и каждый студент появляется только один раз
- Максимальный и минимальный размер команд
- Максимальное количество команд
Пример ввода:
students=['a','b','c','d','e','f','g','h','i','j']
max_team_size=5
min_team_size=2
max_team_count=4
Пример некоторых желаемых выходные данные:
[['a','b','c','d'],['e','f','g'],['h','i','j']],
[['a','b','c'],['d','e','f','g'],['h','i','j']],
[['a','b','c'],['d','e','f'],['g','h','i','j']],
[['a','b'],['c','d','e'],['f''g','h'],['i','j']],
[['a','b','c','d','e'],['f''g','h','i','j']],
...
Существует множество других предпочтений ученика / учителя, которые будут использоваться для фильтрации результатов позже, но сейчас потребуется некоторая помощь в создании всех возможных комбинаций команд. Я пытался использовать [itertools.combinations
] 1 , но я еще не нашел волхвов c, которые бы подходили для моей конкретной ситуации (учитывая моего новичка python и теоретические навыки набора). Я также сталкивался с подобными, «над головой» примерами , которые приближают меня, но не совсем то, что я ищу: