<p><strong>编辑</strong>:编辑代码以满足更新的需求(规则3)。在</p>
<p>代码:</p>
<pre><code>import itertools as it
def unique_group(iterable, k, n):
"""Return an iterator, comprising groups of size `k` with combinations of size `n`."""
# Build separate combinations of `n` characters
groups = ("".join(i) for i in it.combinations(iterable, n)) # 'AB', 'AC', 'AD', ...
# Build unique groups of `k` by keeping the longest sets of characters
return (i for i in it.combinations(groups, k)
if len(set("".join(i))) == sum((map(len, i)))) # ('AB', 'CD'), ('AB', 'CE'), ...
def combined(groups1, groups2):
"""Return an iterator with unique combinations of groups (k and l)."""
# Build a unique cartesian product of groups `k` and `l`, filtering non-disjoints
return (i[0] + i[1]
for i in it.product(groups1, groups2)
if set("".join(i[0])).isdisjoint(set("".join(i[-1]))))
iterable = "ABCDEFG"
g1 = unique_group(iterable, 2, 2)
g2 = unique_group(iterable, 1, 3)
result = list(combined(g1, g2))
print(len(result))
result
</code></pre>
<p>输出:</p>
^{pr2}$
<p>细节和细节可以在<a href="https://repl.it/KHEz/2" rel="nofollow noreferrer">demonstration</a>中找到。在</p>