Spaces:
Runtime error
Runtime error
File size: 2,281 Bytes
fd0b9df 53940d1 fd0b9df ba16816 fd0b9df 53940d1 fd0b9df ba16816 fd0b9df ba16816 fd0b9df 53940d1 fd0b9df 53940d1 fd0b9df 53940d1 fd0b9df 53940d1 fd0b9df | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | import random
# Levels definition
# Targeting ages 9-10
def generate_question(level: int) -> tuple[str, int]:
"""
Returns (question_string, correct_answer) for the given level.
Levels:
1 - Additions (1β30)
2 - Subtractions (1β30, positive result)
3 - Multiplications (2Γ2 β¦ 9Γ9)
4 - Mix (all of the above, up to 50)
5 - Hard Mix (2-digit additions/subtractions, 6Γβ¦12Γ tables)
"""
if level == 1:
a = random.randint(1, 30)
b = random.randint(1, 30)
return f"{a} + {b}", a + b
elif level == 2:
a = random.randint(1, 30)
b = random.randint(1, a)
return f"{a} - {b}", a - b
elif level == 3:
a = random.randint(2, 9)
b = random.randint(2, 9)
return f"{a} Γ {b}", a * b
elif level == 4: # Mix
op = random.choice(["add", "sub", "mul"])
if op == "add":
a = random.randint(10, 50)
b = random.randint(10, 50)
return f"{a} + {b}", a + b
elif op == "sub":
a = random.randint(10, 50)
b = random.randint(1, a)
return f"{a} - {b}", a - b
else:
a = random.randint(2, 12)
b = random.randint(2, 12)
return f"{a} Γ {b}", a * b
else: # level 5+ β Hard Mix
op = random.choice(["add", "sub", "mul"])
if op == "add":
a = random.randint(10, 99)
b = random.randint(10, 99)
return f"{a} + {b}", a + b
elif op == "sub":
a = random.randint(20, 99)
b = random.randint(10, a - 10) # both operands β₯ 2 digits, result β₯ 10
return f"{a} - {b}", a - b
else:
a = random.randint(6, 12) # tables β₯ 6
b = random.randint(6, 12)
return f"{a} Γ {b}", a * b
LEVEL_NAMES = {
1: "β Additions",
2: "β Subtractions",
3: "βοΈ Multiplications",
4: "π² Mix",
}
LEVEL_THRESHOLDS = {1: 5, 2: 5, 3: 5, 4: 999}
def level_up_message(level: int) -> str:
messages = {
2: "π Next level!",
3: "π Multiplications!",
4: "π Expert mode!",
}
return messages.get(level, "")
|