带约束的来自四个元素的长度为2的N次方的唯一组合
我正在尝试生成长度为2^n的所有唯一组合的列表,元素为A、B、X、Y。
这本身并不困难。不过,我有约束!元素被分成两组:(A, B) 和 (X, Y)。序列的顺序必须交替地从 (A, B) 取一个元素,然后从 (X, Y) 取一个元素。举例来说,当n=3时,「A X B Y A X B Y」是允许的,但「A B X Y A B X Y」就不被允许。
我知道可以用穷举来做。我在想是否存在更优雅的做法来实现这一点。这也会是一个有趣的代码高尔夫练习。
解决方案
from itertools import product
n = 3
for c in product('AB', 'XY', repeat=2**(n-1)):
print(*c)
输出(Attempt This Online!):
A X A X A X A X
A X A X A X A Y
A X A X A X B X
...
B Y B Y B Y A Y
B Y B Y B Y B X
B Y B Y B Y B Y
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。