| import random |
|
|
| |
| |
|
|
| 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: |
| 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: |
| 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) |
| return f"{a} - {b}", a - b |
| else: |
| a = random.randint(6, 12) |
| 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, "") |
|
|