Пользовательская перестановка, Равное распределение групп одинакового размера - PullRequest
0 голосов
/ 25 января 2019

Я сделал пост несколько месяцев назад здесь Пользовательская перестановка, Равное распределение пар . Я хотел генерировать пары, уникальные друг для друга, но никогда не содержащие одну и ту же пару.

Я получил отличный ответ от Тьерри Латюля с этим кодом.

def pairs(n):
    for diff in range(1, n):
        starts_seen = set()
        index = 0
        for i in range(n):
            pair = [index]
            starts_seen.add(index)
            index = (index+diff) % n
            pair.append(index)
            yield pair
            index = (index+diff) % n
            if index in starts_seen:
                index = (index+1) % n

pairs = list(pair for pair in pairs(n))
print(pairs)

Теперь, вместо того, чтобы создавать пары, я хочу сделать группы в 3 или 4 и т. Д. Я снова пытаюсь понять, как это сделать. Я предполагаю, что моим существующим кодом можно манипулировать для достижения этой цели, но я не могу получить ничего, что даже стоит поделиться. Я могу создать группы по три, но некоторые из них содержат 2 или 3 одинакового индекса, например: (1, 2,1), (2,2,2). что не желательно.

...