计算某些字符的组合,同时修复某个点上的其他字符

时间:2015-03-31 12:18:58

标签: combinations permutation combinatorics

在做一些cryptanalysis时,我遇到了需要生成某些字符组合的情况。这可以使用许多在线组合生成器轻松完成,除了我想 FIX 我已经知道的某些角色的位置在正确的位置,同时为其余的生成组合。例如,我有字符'A', 'B', 'c', 'D, 'e', 'F', and 'g'

现在,我知道'A'会在第一点出现。因此,请在第一个位置修复'A'。现在,我知道第二和第三点可能是'B''c'。因此,为第二和第三位置换'B''c'。对于第四点,我有一个固定的'D'。第五,固定'e'。第六,'F''f'。第七,'g''3'。等等..

我的问题是如何在按照我想要的方式排列其余字符时修复某些字符?我可以使用任何工具,还是需要自己编写?有人能指点我这么简单吗?

1 个答案:

答案 0 :(得分:1)

这可以通过Python的itertools.product()函数来解决:

#!/usr/bin/env python
from __future__ import absolute_import, division, print_function
from itertools import product


def main():
    for characters in product(*['A', 'Bc', 'Bc', 'D', 'e', 'Ff', 'g3']):
        print(''.join(characters))


if __name__ == '__main__':
    main()

输出:

ABBDeFg
ABBDeF3
ABBDefg
ABBDef3
ABcDeFg
ABcDeF3
ABcDefg
ABcDef3
AcBDeFg
AcBDeF3
AcBDefg
AcBDef3
AccDeFg
AccDeF3
AccDefg
AccDef3