我想找到给定哈希值的消息。为此,我想迭代ascii小写和数字的所有可能的n长度排列的集合,并检查置换的散列是否等于给定的散列值。
问题:由于空间复杂度为O(36 ^ n),因此预先计算集合是不可行的。
想法:在Java中,我会创建一个生成这些排列的Stream,并在应用过滤器后使用findAny()。由于惰性评估,不需要提前计算所有可能的排列。
问题:Python中是否存在一些模仿此行为的等价物?我想itertools可以调整为这样工作,但我不确定。
感谢任何反馈!
您正在寻找发电机:https://wiki.python.org/moin/Generators
def foo(n):
num = 0
while num < n:
yield num
num += 1
f = foo(5)
print f.next() // 0
print f.next() // 1
print f.next() // 2
在此示例中,每次调用f.next()都会计算并返回下一个值。
您可以考虑收益返回值并等待另一个next
调用。