几个月前,我在这里Custom permutation, Equal distribution of pairs发表了一篇文章。我想生成彼此唯一的对,而从不包含同一对。
在这里,Thierry Lathuille用此代码给了我一个很好的答案。
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)
现在,我不想创建配对,而是希望将群组分成3s或4s等。我再次在如何解决这个问题上苦苦挣扎。我猜测可以对现有代码进行操作,但是我什至看不到值得分享的东西。我可以创建三个一组,但其中一些包含2或3个相同的索引,例如:(1, 2,1),(2,2,2)。这是不可取的。