擅长:python、mysql、java
<p><a href="https://stackoverflow.com/questions/6234395/how-to-print-password-combination-but-with-custom-constraints-for-each-index/6234417#6234417">Self-plagiarism</a>不算,对吧?在</p>
<pre><code>import itertools
def all_possibles(password, mapping):
char_options = ([char]+mapping.get(char,[]) for char in password)
for poss in itertools.product(*char_options):
yield ''.join(poss)
</code></pre>
<p>它可以做得像你喜欢的一样紧凑,即使是一行的变体:</p>
^{pr2}$
<p>编辑:啊。我没有注意到递归是一种要求。在这种情况下,如何:</p>
<pre><code>def all_recur(password, mapping):
return [''] if not password else [c + n for c in [password[0]] + mapping.get(password[0], []) for n in all_recur(password[1:], mapping)]
</code></pre>
<p>基本上只是你的压缩版本。请注意,这两个函数都返回“examin”(即未修改的密码);我不确定是否需要这样做。在</p>