更新 providers

This commit is contained in:
2025-11-02 03:15:18 +08:00
parent f689e08a1d
commit 723046a876
20 changed files with 160 additions and 249 deletions

View File

@@ -7,13 +7,46 @@ Puzzle 模块 - 谜题生成系统
from .base import BasePuzzle
from .cloze import ClozePuzzle
from .mcq import MCQPuzzle
from .factory import PuzzleFactory
from .loader import PuzzleLoader
__all__ = [
'BasePuzzle',
'ClozePuzzle',
'MCQPuzzle',
'PuzzleFactory',
'PuzzleLoader',
]
]
puzzles = {
"mcq": MCQPuzzle,
"cloze": ClozePuzzle,
"base": BasePuzzle,
}
@staticmethod
def create_by_dict(config_dict: dict) -> BasePuzzle:
"""
根据配置字典创建谜题
Args:
config_dict: 配置字典,包含谜题类型和参数
Returns:
BasePuzzle: 谜题实例
Raises:
ValueError: 当配置无效时抛出
"""
puzzle_type = config_dict.get('type')
if puzzle_type == 'cloze':
return puzzles["cloze"](
text=config_dict['text'],
min_denominator=config_dict.get('min_denominator', 7)
)
elif puzzle_type == 'mcq':
return puzzles["mcq"](
mapping=config_dict['mapping'],
jammer=config_dict.get('jammer', []),
max_riddles_num=config_dict.get('max_riddles_num', 2),
prefix=config_dict.get('prefix', '')
)
else:
raise ValueError(f"未知的谜题类型: {puzzle_type}")