Pseudo Infinite Monkey Theorem
Posted: Tue May 03, 2011 9:35 pm
I know this is stupid, but it was exciting to get "Hello" in 210k passes!
Code: Select all
Global Dim Letters.s(36)
#NO_PUNCTUATION = 0
#SIMPLE_PUNCTUATION = 1
#COMPLETE_PUNCTUATION = 2
#NO_NUMERICAL = 3
#NO_NUMERICALPUNCTUATION = 4
Define.l IMT_Type = #NO_NUMERICALPUNCTUATION
Define.s stringToMake.s = "Hello World!"
Select IMT_Type ;{ What kind of monkey do you have?
Case #NO_PUNCTUATION
For n = 97 To 122
Letters.s(z) = Chr(n)
z + 1
Next n
Letters.s(26) = Space(1)
Letters.s(27) = "1"
Letters.s(28) = "2"
Letters.s(29) = "3"
Letters.s(30) = "4"
Letters.s(31) = "5"
Letters.s(32) = "6"
Letters.s(33) = "7"
Letters.s(34) = "8"
Letters.s(35) = "9"
Letters.s(36) = "0"
Case #SIMPLE_PUNCTUATION
ReDim Letters.s(40)
For n = 97 To 122
Letters.s(z) = Chr(n)
z + 1
Next n
Letters.s(26) = Space(1)
Letters.s(27) = "1"
Letters.s(28) = "2"
Letters.s(29) = "3"
Letters.s(30) = "4"
Letters.s(31) = "5"
Letters.s(32) = "6"
Letters.s(33) = "7"
Letters.s(34) = "8"
Letters.s(35) = "9"
Letters.s(36) = "0"
Letters.s(37) = "."
Letters.s(38) = ","
Letters.s(39) = "?"
Letters.s(40) = "!"
Case #COMPLETE_PUNCTUATION
ReDim Letters.s(94)
For n = 33 To 126
Letters.s(z) = Chr(n)
z + 1
Next n
Letters.s(94) = Space(1)
Case #NO_NUMERICAL
ReDim Letters.s(30)
For n = 97 To 122
Letters.s(z) = Chr(n)
z + 1
Next n
Letters.s(26) = Space(1)
Letters.s(27) = ","
Letters.s(28) = "."
Letters.s(29) = "?"
Letters.s(30) = "!"
Case #NO_NUMERICALPUNCTUATION
ReDim Letters.s(26)
For n = 97 To 122
Letters.s(z) = Chr(n)
z + 1
Next n
Letters.s(26) = Space(1)
EndSelect ;}
OpenConsole() : ConsoleTitle("Pseudo-Infinite Monkey Theorem")
sTimer = ElapsedMilliseconds()
While UCase(stringToMake.s) <> UCase(formedString.s)
count.l + 1 : formedString.s = ""
For s = 0 To Len(stringToMake.s) - 1
formedString.s + Letters(Random(ArraySize(Letters())))
Next s
PrintN(Str(count) + ": " + formedString.s)
Wend
eTimer = ElapsedMilliseconds() - sTimer
PrintN(#LF$ + "Finished creating the sentence in " + Str(count.l) + " attempts. It took " + Str(eTimer/1000) + " seconds.")
Input()