Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function sm2(interval, ef, streak, grade) {
- if (grade >= 3) {
- if (streak == 0) {
- interval = 1
- streak = 1
- } else if (streak == 1) {
- interval = 6
- streak = 2
- } else {
- interval = Math.round(interval * ef)
- streak++
- }
- } else {
- interval = 1
- streak = 0
- }
- ef = calcEase(ef, 0)
- ef = ef < 1.3 ? 1.3 : ef
- return {
- streak,
- interval,
- ef
- }
- }
- function calcEase (oldEf, grade) {
- return (-0.02 * Math.pow(quality, 2)) + (0.28 * quality) + (oldEase - 0.8)
- }
- procedure Repetition(ElementNo,Grade:longint;var NextInterval:longint;commit:WordBool);
- var DataRecord:TDataRecord;
- begin
- DataRecord:=GetDataRecord(ElementNo);
- with DataRecord do begin
- if Grade>=3 then begin
- if Repetition=0 then begin
- Interval:=1;
- Repetition:=1;
- end
- else if Repetition=1 then begin
- Interval:=6;
- Repetition:=2;
- end
- else begin
- Interval:=round(Interval*EF);
- Repetition:=Repetition+1;
- end;
- end
- else begin
- Repetition:=0;
- Interval:=1;
- end;
- EF:=EF+(0.1-(5-Grade)*(0.08+(5-Grade)*0.02));
- if EF<1.3 then
- EF:=1.3;
- NextInterval:=Interval;
- end;
- if commit then
- SetDataRecord(ElementNo,DataRecord);
- end;
Add Comment
Please, Sign In to add comment