我在这个页面上遇到了一个面试问题:(http://newworld-alex.blogspot.com/2009/03/facebook-interviewzz.html)在
Technical question: In python, given a dictionary of character variations for some word, e.g. dictChars = {"e" : [E, 3], "x" : [X], "a" : [A, @], "m" : [M]} implement a password-cracker-like partial string permutation generator, i.e. produce exaM, exAm, exAM, ex@m, .... I implemented a simple 3-line recursive solution in Python.
我有一个用Python编写的解决方案,但我似乎不知道如何像他那样把它变成3行。在
仅供参考,以下是我目前的解决方案:
def allPossiblePasswords(password, mapping):
if len(password) == 0:
return [""]
else:
next = allPossiblePasswords(password[1:], mapping)
if password[0] in mapping:
return [c + n for c in mapping[password[0]] for n in next]
else:
return [password[0] + n for n in next]
提前谢谢!在
Self-plagiarism不算,对吧?在
它可以做得像你喜欢的一样紧凑,即使是一行的变体:
^{pr2}$编辑:啊。我没有注意到递归是一种要求。在这种情况下,如何:
基本上只是你的压缩版本。请注意,这两个函数都返回“examin”(即未修改的密码);我不确定是否需要这样做。在
这在很多方面都是错误的。但我还是要贴出来。这是一个递归的解决方案。在
我希望我不必说你不应该真的这么做。这个人真的得到这份工作了吗?我很怀疑。在
实际上,虽然我已经意识到DSM的版本更好——几乎可以忍受!这是我对DSM版本的版本,它的价值是什么(不是太多)。这个也符合马克·兰森下面的观点。在
^{pr2}$相关问题 更多 >
编程相关推荐