Module: Fsrs::Scheduler::ReviewState

Included in:
Fsrs::Scheduler
Defined in:
lib/fsrs/fsrs.rb

Overview

rubocop:disable Style/Documentation

Instance Method Summary collapse

Instance Method Details

#compute_review_state_intervals_and_schedule(s, now) ⇒ Object



358
359
360
361
362
363
364
365
366
# File 'lib/fsrs/fsrs.rb', line 358

def compute_review_state_intervals_and_schedule(s, now)
  hard_interval = next_interval(s.hard.stability)
  good_interval = next_interval(s.good.stability)
  hard_interval = [hard_interval, good_interval].min
  good_interval = [good_interval, hard_interval + 1].max
  easy_interval = [next_interval(s.easy.stability), good_interval + 1].max

  s.schedule(now, hard_interval, good_interval, easy_interval)
end

#forgetting_curve(elapsed_days, stability) ⇒ Object



354
355
356
# File 'lib/fsrs/fsrs.rb', line 354

def forgetting_curve(elapsed_days, stability)
  (1 + (factor * elapsed_days / stability))**decay
end

#mean_reversion(init, current) ⇒ Object



368
369
370
# File 'lib/fsrs/fsrs.rb', line 368

def mean_reversion(init, current)
  (self.p.w[7] * init) + ((1 - self.p.w[7]) * current)
end

#schedule_review_state(s, card, now) ⇒ Object



345
346
347
348
349
350
351
352
# File 'lib/fsrs/fsrs.rb', line 345

def schedule_review_state(s, card, now)
  interval = card.elapsed_days
  last_d = card.difficulty
  last_s = card.stability
  retrievability = forgetting_curve(interval, last_s)
  next_ds(s, last_d, last_s, retrievability)
  compute_review_state_intervals_and_schedule(s, now)
end