Files
HeurAMS/src/heurams/kernel/reactor/fission.py
2025-11-10 03:01:42 +08:00

30 lines
1.2 KiB
Python

import heurams.kernel.particles as pt
import heurams.kernel.puzzles as puz
import random
from .states import PhaserState
class Fission():
"""裂变器: 单原子调度展开器"""
def __init__(self, atom: pt.Atom, phase = PhaserState.RECOGNITION):
self.atom = atom
self.orbital_schedule = atom.registry["orbital"]["schedule"][phase.value] # type: ignore
self.orbital_puzzles = atom.registry["orbital"]["puzzles"]
#print(self.orbital_schedule)
self.puzzles = list()
for item, possibility in self.orbital_schedule: # type: ignore
if not isinstance(possibility, float):
possibility = float(possibility)
while possibility > 1:
self.puzzles.append({
"puzzle": puz.puzzles[self.orbital_puzzles[item]["__origin__"]],
"alia": item
})
possibility -= 1
if random.random() <= possibility:
self.puzzles.append({
"puzzle": puz.puzzles[self.orbital_puzzles[item]["__origin__"]],
"alia": item
})
def generate(self):
yield from self.puzzles