Spaces:
Runtime error
Runtime error
| 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, "") | |