This commit is contained in:
2025-10-30 23:03:10 +08:00
parent 98f225efe4
commit bf79d9ef6f
5 changed files with 4 additions and 77 deletions

View File

@@ -1,2 +1,3 @@
# 基础模块现代化改进分支
您正浏览潜进项目的基础模块现代化改进原型分支!
您正浏览潜进项目的基础模块现代化改进原型分支!
[] - HeurAMK

View File

@@ -1,33 +0,0 @@
from typing import Dict, Any, Callable, TypedDict
class AlgorithmConfig(TypedDict):
algo_name: str
defaults: Dict[str, Any]
revisor: Callable[[dict, int, bool], None]
_algorithms: Dict[str, AlgorithmConfig] = {}
def register_algorithm(algo_name: str, defaults: Dict[str, Any], revisor: Callable):
_algorithms[algo_name] = {
'algo_name': algo_name,
'defaults': defaults,
'revisor': revisor
}
def get_algorithm(algo_name: str) -> AlgorithmConfig:
if algo_name not in _algorithms:
raise ValueError(f"算法 {algo_name}' 未找到, 可用值: {list_algorithms()}")
return _algorithms[algo_name]
def list_algorithms() -> list[str]:
return list(_algorithms.keys())
# 导入注册
from . import sm2
register_algorithm(
algo_name=sm2.algo_name,
defaults=sm2.defaults,
revisor=sm2.revisor
)
__all__ = ['get_algorithm', 'list_algorithms', 'register_algorithm', 'AlgorithmConfig']

View File

@@ -3,16 +3,7 @@ class BasePuzzle:
"""谜题基类"""
def refresh(self):
"""刷新谜题, 子类必须实现"""
raise NotImplementedError("谜题对象没有实现 refresh 方法")
raise NotImplementedError("谜题对象未实现 refresh 方法")
def __str__(self):
"""字符串表示, 子类应该实现"""
return f"谜题: {type(self).__name__}"
@classmethod
def register(cls, name: str = None): # type: ignore
"""谜题注册装饰器"""
from registry import registry
puzzle_name = name or cls.__name__
return registry.register(puzzle_name, cls)
return f"谜题: {type(self).__name__}"

View File

@@ -2,7 +2,6 @@
from base import BasePuzzle
import random
@BasePuzzle.register("multiple_choice")
class MCQPuzzle(BasePuzzle):
"""选择题谜题生成器"""

View File

@@ -1,31 +0,0 @@
# registry.py
from typing import Dict, Type, Any
from base import BasePuzzle
class PuzzleRegistry:
"""谜题注册表"""
def __init__(self):
self._puzzles: Dict[str, Type[BasePuzzle]] = {}
def register(self, name: str, puzzle_class: Type[BasePuzzle]):
"""注册谜题类"""
self._puzzles[name] = puzzle_class
return puzzle_class
def create(self, name: str, **kwargs) -> BasePuzzle:
"""创建谜题实例"""
if name not in self._puzzles:
raise ValueError(f"未知的谜题类型: {name}")
return self._puzzles[name](**kwargs)
def list_available(self) -> list:
"""获取可用的谜题类型列表"""
return list(self._puzzles.keys())
def get_class(self, name: str) -> Type[BasePuzzle]:
"""获取谜题类"""
return self._puzzles.get(name) # type: ignore
# 全局注册表实例
registry = PuzzleRegistry()