55 lines
1.2 KiB
Python
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")
|