更新
This commit is contained in:
@@ -1,2 +1,3 @@
|
||||
# 基础模块现代化改进分支
|
||||
您正浏览潜进项目的基础模块现代化改进原型分支!
|
||||
您正浏览潜进项目的基础模块现代化改进原型分支!
|
||||
[] - HeurAMK
|
||||
@@ -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']
|
||||
@@ -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__}"
|
||||
@@ -2,7 +2,6 @@
|
||||
from base import BasePuzzle
|
||||
import random
|
||||
|
||||
@BasePuzzle.register("multiple_choice")
|
||||
class MCQPuzzle(BasePuzzle):
|
||||
"""选择题谜题生成器"""
|
||||
|
||||
|
||||
@@ -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()
|
||||
Reference in New Issue
Block a user