Я сделал пост несколько месяцев назад здесь Пользовательская перестановка, Равное распределение пар . Я хотел генерировать пары, уникальные друг для друга, но никогда не содержащие одну и ту же пару.
Я получил отличный ответ от Тьерри Латюля с этим кодом.
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). что не желательно.