Module: Fsrs::Scheduler::ReviewState
- Included in:
- Fsrs::Scheduler
- Defined in:
- lib/fsrs/fsrs.rb
Overview
rubocop:disable Style/Documentation
Instance Method Summary collapse
- #compute_review_state_intervals_and_schedule(s, now) ⇒ Object
- #forgetting_curve(elapsed_days, stability) ⇒ Object
- #mean_reversion(init, current) ⇒ Object
- #schedule_review_state(s, card, now) ⇒ Object
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 |