Download v1_app.py from MarcosAutuori/Factorization_Trainer_Interactive_Math_Game: direct link, hf CLI and curl.
- Browser
- Download file 2.3 kB
-
https://huggingface.co/spaces/MarcosAutuori/Factorization_Trainer_Interactive_Math_Game/resolve/main/v1_app.py
- Command line
-
hf download hf://spaces/MarcosAutuori/Factorization_Trainer_Interactive_Math_Game/v1_app.py
-
curl -L -o v1_app.py https://huggingface.co/spaces/MarcosAutuori/Factorization_Trainer_Interactive_Math_Game/resolve/main/v1_app.py
2.3 kB
| import gradio as gr | |
| import time | |
| import numpy as np | |
| class FactorizationGame: | |
| def __init__(self): | |
| self.score = 0 | |
| self.start_time = None | |
| self.numbers = list(range(2, 11)) | |
| self.target_number = None | |
| self.user_input = None | |
| def generate_target(self): | |
| self.target_number = np.random.choice(self.numbers) | |
| def check_answer(self, factor): | |
| if self.target_number is None: | |
| return "Select a number first!", 0, self.target_number, int(150 - (time.time() - self.start_time)) if self.start_time else 150 | |
| # Simple factorization check | |
| if self.target_number % factor == 0: | |
| feedback = f"✅ Correct! {factor} is a factor of {self.target_number}" | |
| self.score += 1 | |
| else: | |
| feedback = f"❌ Wrong! {factor} is NOT a factor of {self.target_number}" | |
| self.generate_target() | |
| elapsed = int(time.time() - self.start_time) if self.start_time else 0 | |
| time_left = max(0, 150 - elapsed) | |
| return feedback, self.score, self.target_number, time_left | |
| def start_game(self): | |
| self.start_time = time.time() | |
| self.score = 0 | |
| self.generate_target() | |
| return 0, 150, self.target_number | |
| game = FactorizationGame() | |
| with gr.Blocks(title="Factorization Game") as demo: | |
| gr.Markdown("# 🎮 Factorization Trainer") | |
| gr.Markdown("Select a factor of the target number!") | |
| with gr.Row(): | |
| with gr.Column(): | |
| target = gr.Number(label="Target Number", interactive=False) | |
| score = gr.Number(label="Score", interactive=False) | |
| time_left = gr.Number(label="Time Left (s)", interactive=False) | |
| with gr.Column(): | |
| feedback = gr.Textbox(label="Feedback", interactive=False) | |
| with gr.Row(): | |
| for num in range(2, 11): | |
| gr.Button(str(num)).click( | |
| fn=lambda x=num: game.check_answer(x), | |
| outputs=[feedback, score, target, time_left] | |
| ) | |
| with gr.Row(): | |
| reset_btn = gr.Button("Start/Reset Game", variant="primary") | |
| reset_btn.click( | |
| fn=game.start_game, | |
| outputs=[score, time_left, target] | |
| ) | |
| if __name__ == "__main__": | |
| demo.launch() |