tilde-projects/Code/irc/puzzle.py

51 lines
2.2 KiB
Python
Raw Normal View History

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))]
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]