Quizard/example.py
2025-04-15 22:09:15 +03:00

55 lines
1.2 KiB
Python

from enum import Enum
from typing import Generic
from option import Some
from Quizard import Quizard, QuizTask, QuizTaskGeneratorMetadata, TaskGenerator
class TagCategory(str, Enum):
TOPIC = "topic"
DIFFICULTY = "difficulty"
class TopicTag(str, Enum):
AVERAGE = "average"
VARIANCE = "variance"
class MyTaskGenerator(TaskGenerator[TagCategory, TopicTag]):
def __init__(self):
self.metadata = QuizTaskGeneratorMetadata[TagCategory, TopicTag].from_values(
name=self.__class__.__name__,
)
class AverageTask(MyTaskGenerator):
def generate(self):
return QuizTask(
"What is an average of 3, 4, 5 and 6?",
"4.5",
tags=[
(TagCategory.TOPIC, TopicTag.AVERAGE),
],
)
class AverageTask1(MyTaskGenerator):
def generate(self):
return QuizTask(
"What is an average of 1, 2, 3 and 4?",
"2.5",
tags=[
(TagCategory.TOPIC, TopicTag.VARIANCE),
],
)
default_amount = Some(1)
quizard = Quizard([AverageTask(), AverageTask1()], 3)
quizard.fillTaskPool()
print(*[task.generator_metadata.id for task in quizard.taskPool], sep="\n\n")