File size: 863 Bytes
50a0917 b56681c | 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 | from typing import Callable, Dict
from .easy import get_task as get_easy_task, grade as easy_grade
from .medium import get_task as get_medium_task, grade as medium_grade
from .hard import get_task as get_hard_task, grade as hard_grade
TASKS: Dict[str, Dict] = {
"easy": get_easy_task(),
"medium": get_medium_task(),
"hard": get_hard_task(),
}
GRADERS: Dict[str, Callable[[str], float]] = {
"easy": easy_grade,
"medium": medium_grade,
"hard": hard_grade,
}
# Canonical easy->medium->hard ordered tasks for validator discovery.
TASK_SEQUENCE = ["easy", "medium", "hard"]
# Explicit task/grader pairs with callable graders.
TASKS_WITH_GRADERS = [
{
"id": key,
"difficulty": TASKS[key].get("difficulty", key),
"task": TASKS[key],
"grader": GRADERS[key],
}
for key in TASK_SEQUENCE
]
def list_tasks_with_graders():
return TASKS_WITH_GRADERS
|