Spaces:
Running
Running
| """Load static, competition-approved tasks.""" | |
| import os | |
| import json | |
| from pathlib import Path | |
| from typing import Dict, List, Optional | |
| # Get the dataset root (same folder as this file) | |
| DATASET_ROOT = Path(__file__).parent | |
| # Hardcoded competition tasks: Easy Medium Hard | |
| STATIC_TASKS = { | |
| "easy": { | |
| "problem_id": "problem_1", | |
| "difficulty": "easy", | |
| "description": "String reversal with space normalization", | |
| }, | |
| "medium": { | |
| "problem_id": "problem_10", | |
| "difficulty": "medium", | |
| "description": "Matrix 90 clockwise rotation", | |
| }, | |
| "hard": { | |
| "problem_id": "problem_13", | |
| "difficulty": "hard", | |
| "description": "LRU cache with correct eviction policy", | |
| }, | |
| } | |
| def load_problem(problem_id: str) -> Dict[str, any]: | |
| """ | |
| Load a single problem from disk. | |
| Args: | |
| problem_id: e.g., "problem_1", "problem_10", "problem_13" | |
| Returns: | |
| { | |
| "code": str, # buggy.py content | |
| "tests": str, # test.py path (relative to problem folder) | |
| "metadata": dict, # metadata.json | |
| "problem_dir": str, # absolute path to problem folder | |
| } | |
| """ | |
| problem_dir = DATASET_ROOT / problem_id | |
| if not problem_dir.exists(): | |
| raise FileNotFoundError(f"Problem directory not found: {problem_dir}") | |
| # Load buggy code | |
| buggy_file = problem_dir / "buggy.py" | |
| code = buggy_file.read_text(encoding="utf-8") | |
| # Load metadata | |
| metadata_file = problem_dir / "metadata.json" | |
| metadata = json.loads(metadata_file.read_text(encoding="utf-8")) | |
| # Test file path (relative to problem root) | |
| test_path = str(problem_dir / "test.py") | |
| return { | |
| "code": code, | |
| "tests": test_path, | |
| "metadata": metadata, | |
| "problem_dir": str(problem_dir), | |
| "problem_id": problem_id, | |
| } | |
| def get_hardcoded_task(difficulty: str) -> Dict[str, any]: | |
| """ | |
| Get one of the three static competition tasks. | |
| Args: | |
| difficulty: "easy" | "medium" | "hard" | |
| Returns: | |
| Task dict with code, tests, metadata | |
| Raises: | |
| ValueError: if difficulty is not one of the three approved values | |
| """ | |
| if difficulty not in STATIC_TASKS: | |
| raise ValueError( | |
| f"Invalid difficulty '{difficulty}'. " | |
| f"Must be one of: {list(STATIC_TASKS.keys())}" | |
| ) | |
| task_info = STATIC_TASKS[difficulty] | |
| problem_id = task_info["problem_id"] | |
| return load_problem(problem_id) | |
| def get_random_tasks(): | |
| """ | |
| DEPRECATED: Use get_hardcoded_task() instead. | |
| Kept for backward compatibility. | |
| """ | |
| import warnings | |
| warnings.warn( | |
| "get_random_tasks() is deprecated. Use get_hardcoded_task('easy'|'medium'|'hard')", | |
| DeprecationWarning, | |
| stacklevel=2 | |
| ) | |
| # Return a default (easy) | |
| return get_hardcoded_task("easy") | |