可用性改动
This commit is contained in:
86
reactor.py
86
reactor.py
@@ -1 +1,85 @@
|
||||
class Reactor(tasked_num):
|
||||
import typing
|
||||
import particles as pt
|
||||
|
||||
class Reactor():
|
||||
def __init__(self, nucleon_file: pt.AtomicFile, electron_file: pt.AtomicFile, tasked_num):
|
||||
# 导入原子对象
|
||||
self.reported = set()
|
||||
self.nucleon_file = nucleon_file
|
||||
self.electron_file = electron_file
|
||||
self.tasked_num = tasked_num
|
||||
self.atoms_new: typing.List[typing.Tuple[pt.Electron, pt.Nucleon]] = list()
|
||||
self.atoms_review: typing.List[typing.Tuple[pt.Electron, pt.Nucleon]] = list()
|
||||
for atom in zip(electron_file.datalist, nucleon_file.datalist):
|
||||
if atom[0].is_activated == 0:
|
||||
atom[0].is_activated = 1
|
||||
self.atoms_new.append(atom)
|
||||
else:
|
||||
if atom[0].next_date <= pt.Aux.get_daystamp():
|
||||
atom[0].last_date = pt.Aux.get_daystamp()
|
||||
self.atoms_review.append(atom)
|
||||
# 设置运行时
|
||||
self.index: int
|
||||
self.procession: list
|
||||
self.failed: list
|
||||
self.round_title: str
|
||||
self.reported: set
|
||||
self.current_atom: typing.Tuple[pt.Electron, pt.Nucleon]
|
||||
self.round_set = 0
|
||||
self.current_atom = pt.Atom.placeholder()
|
||||
|
||||
def set_round(self, title, procession):
|
||||
self.round_set = 1
|
||||
self.round_title = title
|
||||
self.procession = procession
|
||||
self.failed = list()
|
||||
self.index = -1
|
||||
|
||||
def set_round_templated(self, stage):
|
||||
titles = {
|
||||
1: "复习模式",
|
||||
2: "新记忆模式",
|
||||
3: "总复习模式"
|
||||
}
|
||||
processions = {
|
||||
1: self.atoms_review,
|
||||
2: self.atoms_new,
|
||||
3: list(set(self.atoms_new + self.atoms_review))
|
||||
}
|
||||
ret = 1
|
||||
if stage == 1 and len(processions[1]) == 0:
|
||||
stage = 2
|
||||
ret = 2
|
||||
self.set_round(title=titles[stage], procession=processions[stage])
|
||||
return ret
|
||||
|
||||
def forward(self, step = 1):
|
||||
if self.index + step >= len(self.procession):
|
||||
if len(self.failed) > 0:
|
||||
self.procession = self.failed
|
||||
self.index = -1
|
||||
self.forward(step)
|
||||
if "- 额外复习" not in self.round_title:
|
||||
self.round_title += " - 额外复习"
|
||||
self.failed = list()
|
||||
return 1 # 自动重定向到 failed
|
||||
else:
|
||||
self.round_set = 0
|
||||
return -1 # 此轮已完成
|
||||
self.index += step
|
||||
self.current_atom = self.procession[self.index]
|
||||
return 0
|
||||
|
||||
def save(self):
|
||||
self.nucleon_file.save()
|
||||
self.electron_file.save()
|
||||
|
||||
def report(self, atom, quality):
|
||||
if atom[0] not in self.reported:
|
||||
atom[0].revisor(quality)
|
||||
self.reported.add(atom[0])
|
||||
if quality <= 3:
|
||||
self.failed.append(atom)
|
||||
return 1
|
||||
else:
|
||||
return 0
|
Reference in New Issue
Block a user