2016-01-06 19:08:25 +00:00
#!/usr/bin/python
import random
import inflect
p = inflect . engine ( )
2016-01-11 21:26:15 +00:00
primes = [ 11 , 13 , 17 , 19 , 23 , 29 , 31 , 37 , 41 , 43 , 47 , 53 , 59 , 61 , 67 , 71 ]
2016-09-07 15:58:36 +00:00
obfuscate = True
2016-01-06 19:08:25 +00:00
def make_puzzle ( ) :
answer = 0
2016-09-07 15:58:36 +00:00
puzzle = random . choice ( [ " Prove you ' re not a robot: " , " Are you a robot?: " , " Anti-bot check: " , " Counter-cndorphant measures: " , " Cosnok countermeasures: " ] )
2016-01-06 19:08:25 +00:00
puzzle + = random . choice ( [ " What is " , " How many is " , " What do you get from " , " What do you get with " , " What is the value of " , " Can you answer " , " Can you tell me " ] )
puzzle + = " "
2016-01-11 21:26:15 +00:00
roll = random . randrange ( 0 , 6 )
2016-01-06 19:08:25 +00:00
var1 = random . randrange ( 1 , 10 )
var2 = random . randrange ( 1 , 10 )
if roll == 0 :
answer = var1 + var2
puzzle + = p . number_to_words ( var1 ) + " " + random . choice ( [ " and " , " plus " , " sum " , " add " ] ) + " " + p . number_to_words ( var2 )
elif roll == 1 :
answer = var1 * var2
puzzle + = p . number_to_words ( var1 ) + " " + random . choice ( [ " times " , " multiply " , " multiplied by " , " product " ] ) + " " + p . number_to_words ( var2 )
elif roll == 2 :
if var2 > var1 :
var1 , var2 = var2 , var1
answer = var1 - var2
puzzle + = p . number_to_words ( var1 ) + " " + random . choice ( [ " minus " , " subtract " , " take away " , " less " ] ) + " " + p . number_to_words ( var2 )
elif roll == 3 :
if var2 > var1 :
var1 , var2 = var2 , var1
answer = var1 * 2 / var2
puzzle + = p . number_to_words ( var1 * 2 ) + " " + random . choice ( [ " divided by " , " over " ] ) + " " + p . number_to_words ( var2 ) + " (no remainder) "
elif roll == 4 :
2016-01-11 21:26:15 +00:00
answer = var1 * * var2
2016-01-06 19:08:25 +00:00
puzzle + = p . number_to_words ( var1 ) + " to the " + p . ordinal ( p . number_to_words ( var2 ) ) + " power "
2016-01-11 21:26:15 +00:00
elif roll == 5 :
p1 = primes [ random . randrange ( 0 , len ( primes ) ) ]
p2 = primes [ random . randrange ( 0 , len ( primes ) ) ]
2016-02-04 14:41:43 +00:00
answer = str ( min ( p1 , p2 ) ) + ' , ' + str ( max ( p1 , p2 ) )
puzzle + = p . number_to_words ( p1 * p2 ) + " when factored into its two primes (answer in the form of the two primes with a comma between) "
2016-01-11 21:26:15 +00:00
2016-01-06 19:08:25 +00:00
puzzle + = " ? (Answer with numbers) "
2016-09-07 15:58:36 +00:00
if obfuscate == True :
for _ in range ( 3 ) :
idx = random . randrange ( len ( puzzle ) - 1 ) #get between 0 and string length
puzzle = ' ' . join ( [ puzzle [ 0 : idx ] , chr ( random . randint ( 33 , 126 ) ) , puzzle [ idx + 1 : ] ] )
2016-01-06 19:08:25 +00:00
return [ answer , puzzle ]