我正在尝试用Python编写一个bruteforce字符串生成器,itertools.combinations_with_replacement
似乎就可以做到这一点。在
gen = itertools.combinations_with_replacement('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',12)
for combination in gen:
check(''.join(combination))
假设用户运行该程序几个小时,并达到字符串aaaeabdouzIU
。在
有没有办法给一个字符串,让他们停下来,从那一点开始进行组合?在
所以如果我传递字符串'acc
',它应该开始尝试'acd
','ace
',...
itertools.combinations_with_replacement
本机不提供此功能,是否有人可以实现此功能?在
如果你知道,给定一个组合,就很容易产生下一个。在
一种方法可以是定义从组合到自然数的映射,以及从自然数到组合的逆映射。例如,您可以使用
base62_encode
/base62_decode
来自Base 62 conversion以及一个生成所有组合的生成器给定一个起点:
^{pr2}$用法:
或者,从一个起点重新开始计算:
从itertools man page获取原始代码,用替换代码复制组合的代码,但用从输入的单词开始的新索引替换第7行。在
然后运行手册页中的其余代码。在
编辑:完整的运行功能:
^{pr2}$相关问题 更多 >
编程相关推荐