</lurk>
His Python code is not terribly pleasant:
1/ there's absolutely no need for an object, much less repeated recursive object creation
2/ The spacing is bizarre (though that might be the fault of your pasting)
3/ (minor nit) self.Outer should be self.outer
4/ His code is slooooow
5/ I consider myself a reasonable Python programmer ;-) but trying to follow that gives me a headache
6/ As others have noted it's rather inflexible
Here's a shorter simpler faster more-flexible version plus a test to demonstrate that his version is more than 5** times slower under Py2.5!!:
def make_combos(curr, *rest):
if rest:
rest = make_combos(*rest)
else:
rest = [""]
for y in rest:
for x in curr:
yield y + x
def password_generator(seeds=DEFAULT_CHAR_SET, minlen=1, maxlen=8):
chars = [seeds]*minlen
for i in range(minlen, maxlen+1):
for elem in make_combos(*chars):
yield elem
chars.append(seeds)
# insert the code for PasswordGenerator here
def test_combos():
for pwd in password_generator():
yield pwd
def test_generator():
for elem in PasswordGenerator():
yield elem
if __name__ == "__main__":
for test_type in [test_combos, test_generator]:
for i in range(3):
test = test_type().next
start = time.time()
for j in range(1000000):
test() # change to "print test()" if you want output
print time.time() - start,
print
[**To be fair, his version is slightly faster for smaller numbers and gets worse the larger the number of passwords required...]<lurk>
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.