2014-09-18 2 views
-2

У меня есть класс с 24 студентами, и я хочу сделать 6 групп по 4 ученика. Эти 6 групп будут вращаться каждую неделю. Важно, чтобы в каждой группе не было двух одинаковых учеников каждую неделю. В какой-то момент она начнет над конечно ...Группировка классов в Python

Допустим, студенты пронумерованы от 1 до 24.

в группы 1-2-3-4 первую неделю и 1-2-5-6 на следующей неделе являются неприемлемо, потому что у них есть ученики 1 и 2 в одной группе.

Группы не могут иметь одного и того же человека в двух разных группах в неделю. Группы 1-2-3-4 и 1-5-6-7 на той же неделе неприемлемы.

Как я могу это сделать в Python, пожалуйста?

Я пробовал itertools, но я не могу заставить его работать. Я получаю группы, подобные этим:

Первая неделя: 1-2-3-4 На следующей неделе: 1-2-3-5

Они в общих студентов 1-2-3 ...

Спасибо заранее!

+0

Что вы меда, что эти 6 групп будут вращаться каждую неделю? – Kasramvd

+0

Насколько это важно? Почему бы не просто «random.shuffle» и взять группы из четырех? – jonrsharpe

+0

Поделиться кодом, который вы написали. – Celeo

ответ

0

Я уверен, что какой-то умный человек придет вместе со списком, который сделает это в одной строке, но вот вложенный цикл, который сделает это за вас, я думаю.

# get the initial set of groups 
groups = list(zip(*[iter(range(1,25)] * 4)) 

def regroup(groups): 
    j = 0 
    new_groups = [[],[],[],[],[],[]] 
    for group in groups: 
     for item in group: 
      new_groups[j].append(item) 
      j = (j + 1) % 6 

    return new_groups 
Смежные вопросы