Spaced Repetition algorithm for Ruby.
Install
Add to your Gemfile:
gem 'spaced_repetition', :git => 'git://github.com/espresse/spaced_repetition.git'
and run
bundle install
Typical use-case:
require 'rubygems'
require 'spaced_repetition'
#user's quality_response is 5, no previous repetition had been done yet
sm2 = SpacedRepetition::Sm2.new(5)
#user's quality response is 3, his/her prevoius interval was 3 days and easiness factor was 2.1
sm2 = SpacedRepetition::Sm2.new(3,3,2.1)
You can fetch results:
#new interval
new_interval = sm2.interval
#new easiness_factor
new_ef = sm2.easniness_factor
#new repetition date
new_date = sm2.next_repetition_date
By default, SM2, uses 6 possible answers (0-5), where 0 is very bad and 5 is perfect. If you want to use 4 answers (0 /very bad/ - 3 /perfect/) you can choose SM2Mod. It works in the same manner as SM2 does.