mirror of
https://github.com/RussellChamp/tilde-projects.git
synced 2026-10-28 00:22:34 +00:00
Add files I forgot
This commit is contained in:
1 parent
5f1bf146c3
commit
772995c0ff
29 files changed
+1807
No files matched your search
@@ -0,0 +1,187 @@
|
||||
#!/usr/bin/python3
|
||||
|
||||
import random
|
||||
import hashlib
|
||||
import inflect
|
||||
|
||||
import util.quote_puzzle
|
||||
import util.dict_puzzle
|
||||
import util.textcaptcha
|
||||
|
||||
p = inflect.engine()
|
||||
primes = [11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71]
|
||||
fuzz_amount = 3
|
||||
|
||||
|
||||
def make_puzzle(obfuscate=True, roll=None):
|
||||
answer = 0
|
||||
bonus = 0
|
||||
puzzle = random.choice(
|
||||
[
|
||||
"Prove you're not a robot: ",
|
||||
"Are you a robot?: ",
|
||||
"Anti-bot check: ",
|
||||
"Counter-cnd0rphant measures: ",
|
||||
"Cosn0k countermeasures: ",
|
||||
"Anti-tilde7hief precautions: ",
|
||||
"Pro-l0gin challenge: ",
|
||||
"Riddle me this: ",
|
||||
"Would you like to play a game? ",
|
||||
"How about this? "
|
||||
]
|
||||
)
|
||||
puzzle += random.choice(
|
||||
[
|
||||
"What is",
|
||||
"What do you get from",
|
||||
"What do you get with",
|
||||
"What is the value of",
|
||||
"Can you answer",
|
||||
"Can you tell me",
|
||||
"Ask wiz3bot what is",
|
||||
"Does anybody know",
|
||||
"Who knows",
|
||||
"Guess what",
|
||||
"Calculate",
|
||||
"Find out"
|
||||
]
|
||||
)
|
||||
puzzle += " "
|
||||
roll = roll or random.randrange(0, 21)
|
||||
var1 = random.randrange(1, 10)
|
||||
var2 = random.randrange(1, 10)
|
||||
var3 = random.randrange(1, 20)
|
||||
var4 = random.randrange(1, 20)
|
||||
let1_ord = random.randrange(ord("a"), ord("z") + 1)
|
||||
|
||||
if roll == 0:
|
||||
answer = var1 + var2
|
||||
puzzle += "{} {} {}".format(
|
||||
p.number_to_words(var1),
|
||||
random.choice(["and", "plus", "sum", "add"]),
|
||||
p.number_to_words(var2),
|
||||
)
|
||||
|
||||
elif roll == 1:
|
||||
answer = var1 * var2
|
||||
puzzle += "{} {} {}".format(
|
||||
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 += "{} {} {}".format(
|
||||
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 += "{} {} {} (no remainder)".format(
|
||||
p.number_to_words(var1 * 2),
|
||||
random.choice(["divided by", "over"]),
|
||||
p.number_to_words(var2),
|
||||
)
|
||||
|
||||
elif roll == 4:
|
||||
answer = var1 ** var2
|
||||
puzzle += "{} to the {} power".format(
|
||||
p.number_to_words(var1), p.ordinal(p.number_to_words(var2))
|
||||
)
|
||||
|
||||
elif roll == 5:
|
||||
p1 = random.choice(primes)
|
||||
p2 = random.choice(primes)
|
||||
|
||||
def answer(guess):
|
||||
# Check the the numbers entered are correct, regardless of order
|
||||
# or surrounding whitespace.
|
||||
attempt = sorted(word.strip() for word in guess.split(","))
|
||||
correct = sorted([str(p1), str(p2)])
|
||||
return attempt == correct
|
||||
|
||||
bonus = 1
|
||||
puzzle += "{} when factored into its two primes (answer in the form of the two primes with a comma between)".format(
|
||||
p.number_to_words(p1 * p2)
|
||||
)
|
||||
|
||||
elif roll == 6:
|
||||
prime = random.choice(primes)
|
||||
answer = prime % var1
|
||||
puzzle += p.number_to_words(prime) + " modulus " + p.number_to_words(var1)
|
||||
elif roll == 7:
|
||||
if let1_ord + var1 > ord("z"):
|
||||
let1_ord -= var1
|
||||
answer = chr(let1_ord + var1)
|
||||
puzzle += "letter comes {} letters after '{}'".format(
|
||||
p.number_to_words(var1), chr(let1_ord)
|
||||
)
|
||||
|
||||
obfuscate = False
|
||||
elif roll == 8:
|
||||
if let1_ord - var1 < ord("a"):
|
||||
let1_ord += var1
|
||||
answer = chr(let1_ord - var1)
|
||||
puzzle += "letter comes {} letters before '{}'".format(
|
||||
p.number_to_words(var1), chr(let1_ord)
|
||||
)
|
||||
|
||||
obfuscate = False
|
||||
elif roll == 9:
|
||||
answer, puzzle = util.quote_puzzle.get_quote()
|
||||
obfuscate = False
|
||||
elif roll == 10:
|
||||
answer = str(min(var1, var2, var3, var4))
|
||||
puzzle += "the {} of {}, {}, {}, and {}".format(
|
||||
random.choice(["smallest", "lowest"]),
|
||||
p.number_to_words(var1),
|
||||
p.number_to_words(var2),
|
||||
p.number_to_words(var3),
|
||||
p.number_to_words(var4),
|
||||
)
|
||||
|
||||
elif roll == 11:
|
||||
answer = str(max(var1, var2, var3, var4))
|
||||
puzzle += "the {} of {}, {}, {}, and {}".format(
|
||||
random.choice(["biggest", "largest"]),
|
||||
p.number_to_words(var1),
|
||||
p.number_to_words(var2),
|
||||
p.number_to_words(var3),
|
||||
p.number_to_words(var4),
|
||||
)
|
||||
|
||||
elif roll <= 14: # 12-14
|
||||
answer, puzzle = util.dict_puzzle.get_puzzle()
|
||||
obfuscate = False
|
||||
elif roll <= 17: # 15-17
|
||||
answer, puzzle = util.dict_puzzle.get_anagram()
|
||||
obfuscate = False
|
||||
elif roll == 18:
|
||||
answer, puzzle = util.quote_puzzle.get_chuck()
|
||||
obfuscate = False
|
||||
elif roll <= 20: #19-20
|
||||
captcha = util.textcaptcha.get_captcha()
|
||||
puzzle = captcha['q'] # the question part of the captcha
|
||||
# print(captcha)
|
||||
answer = lambda a : hashlib.md5(a.encode()).hexdigest() in captcha['a'] # check if the answer is correct
|
||||
obfuscate = False
|
||||
bonus = 1
|
||||
|
||||
# Add a question mark on the end of the question
|
||||
if puzzle[-1] != "?":
|
||||
puzzle += "?"
|
||||
|
||||
if obfuscate == True:
|
||||
for _ in range(fuzz_amount):
|
||||
idx = random.randrange(len(puzzle) - 2) # get between 0 and string length (except the ? mark)
|
||||
puzzle = "".join(
|
||||
[puzzle[0:idx], chr(random.randint(33, 126)), puzzle[idx + 1 :]]
|
||||
)
|
||||
return [puzzle, answer, bonus]
|
||||
Reference in new issue
Block a user