class Sm2::Fact

Constants

D_EF

D_EF = (0.1 - (MAX_GRADE - grade) * (0.08 + (MAX_GRADE - grade) * 0.02))

MAX_GRADE

Attributes

easiness_factor[R]
interval[R]
repetition[R]

Public Class Methods

new(easiness_factor: nil, repetition: nil, interval: nil) click to toggle source
# File lib/sm2/fact.rb, line 16
def initialize(easiness_factor: nil, repetition: nil, interval: nil)
  @easiness_factor = easiness_factor || 2.5
  @repetition = repetition || 0
  @interval = interval
end

Public Instance Methods

next_interval(grade) click to toggle source
# File lib/sm2/fact.rb, line 22
def next_interval(grade)
  grade = MAX_GRADE if grade > MAX_GRADE

  if grade >= 3
    if repetition == 0
      @interval = 1
      @repetition = 1
    elsif repetition == 1
      @interval = 6
      @repetition = 2
    else
      @interval = (interval * easiness_factor).round
      @repetition = repetition + 1
    end
  else
    @repetition = 0
    @interval = 1
  end

  @easiness_factor = (easiness_factor + D_EF[grade]).round(2)
  @easiness_factor = easiness_factor < 1.3 ? 1.3 : easiness_factor

  return interval
end