自定义排列,相等大小组的均等分布

时间:2019-01-25 16:35:06

标签: python python-3.x combinations permutation discrete-mathematics

几个月前,我在这里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)。这是不可取的。

0 个答案:

没有答案