Problem with algorithm

Paul McGuire ptmcg at austin.rr.com
Fri Apr 13 17:41:31 CEST 2007


On Apr 13, 10:22 am, Michael Bentley <mich... at jedimindworks.com>
wrote:
> On Apr 13, 2007, at 9:19 AM, Paul McGuire wrote:
>
> > If you just expand the length to five million* or so, one of those
> > strings will contain all the works of Shakespeare.
>
> Not likely, even with a tiny sampling of the works of Shakespeare:
>
> # :-)
>
> import string
> import random
>
> def main(bardText, maxTries=5000000):
>      tries = 0
>      while tries < maxTries:
>          tries += 1
>          attempt = []
>          for letter in bardText.lower():
>              if random.choice(
>                  string.lowercase[:26]
>                  + string.punctuation
>                  + ' '
>                  ) == letter:
>                  attempt.append(letter)
>              else:
>                  break
>          if len(attempt) >= 4:
>              print '%d: %s' % (
>                  tries,
>                  ''.join(attempt)
>              )
>
> if __name__ == "__main__":
>      main("Alas, poor Yorick!")

5000000 << infinity

Keep tryin'!

Also, the OP's technique was not doing random string permutations, but
generating an exhaustive list of all possible sequences from aaa... to
zzz... .  So I think the works of Shakespeare are *bound* to be in
there somewhere.

For proof, here's an extract from my sample code from running this
exhaustive program with length=14:

...
ALASPOORYORICG
ALASPOORYORICH
ALASPOORYORICI
ALASPOORYORICJ
ALASPOORYORICK
ALASPOORYORICL
ALASPOORYORICM
ALASPOORYORICN
ALASPOORYORICO
...

-- Paul
:) (too late for April 1, unfortunately)




More information about the Python-list mailing list