tweak scheduler

- don't touch factor on fail, as per SM2 specs
- hard code no-punish-on-hard 'learning period' to 7 days so users who tweak
  the initial intervals aren't punished too early
This commit is contained in:
Damien Elmes 2010-02-01 03:28:46 +09:00
parent 863d3d8319
commit 87a0e087e5

View file

@ -519,13 +519,8 @@ where id != :id and factId = :factId""",
if not card.reps: if not card.reps:
# card is new, inherit beginning factor # card is new, inherit beginning factor
card.factor = self.averageFactor card.factor = self.averageFactor
if self.cardIsBeingLearnt(card) and ease in [0, 1, 2]: if ease == 2:
# only penalize failures after success when starting if card.successive and not self.cardIsBeingLearnt(card):
if card.successive and ease != 2:
card.factor -= 0.20
elif ease in [0, 1]:
card.factor -= 0.20
elif ease == 2:
card.factor -= 0.15 card.factor -= 0.15
elif ease == 4: elif ease == 4:
card.factor += 0.10 card.factor += 0.10
@ -985,7 +980,7 @@ and due < :now""" % self.forceIndex("ix_cards_priorityDue"), now=time.time())
def cardIsBeingLearnt(self, card): def cardIsBeingLearnt(self, card):
"True if card should use present intervals." "True if card should use present intervals."
return card.interval < self.easyIntervalMin return card.interval < 7
def cardIsYoung(self, card): def cardIsYoung(self, card):
"True if card is not new and not mature." "True if card is not new and not mature."