l3kn / org-fc

Spaced Repetition System for Emacs org-mode
https://www.leonrische.me/fc/index.html
GNU General Public License v3.0
259 stars 31 forks source link

Hardcoded box size #43

Closed ghost closed 4 years ago

ghost commented 4 years ago

https://github.com/l3kn/org-fc/blob/e9f9679238b3d0f32f8413d0ea2e2bbf891d701f/org-fc.el#L1467

I may be wrong, but this specific line seems to assume that the length of the box will always be 3 elements.

l3kn commented 4 years ago

What do you mean by "the length of the box"?

The box value is used to track how many times in a row an item has been reviewed correctly and to look up fixed spacing intervals for the first few repetitions.

ghost commented 4 years ago

https://github.com/l3kn/org-fc/blob/e9f9679238b3d0f32f8413d0ea2e2bbf891d701f/org-fc.el#L1467

If a card is rated "easy", then next-box is set to 2.

https://github.com/l3kn/org-fc/blob/e9f9679238b3d0f32f8413d0ea2e2bbf891d701f/org-fc.el#L1473-L1477

Here, if next-box is less than the length of org-fc-sm2-fixed-intervals, then it just iterates over the fixed interval to the nth interval

My org-fc-sm2-fixed-intervals is not of length 2 - it is of length 3. Now, this means that instead of directly "graduating" out of the fixed intervals, pressing "easy" just jumps to the second fixed interval.

l3kn commented 4 years ago

Ah, I see your point.

My intention with this was to speed up learning "easy" cards by skipping one of the small initial intervals. By default, there are four fixed intervals (I think I got these from one of the supermemo algorithms), so it will always use another fixed interval.

Let's say you have a new card/position (box 0) with a small initial interval (e.g. 0.1) and it "graduates" out of the fixed intervals after rating it as "easy". With the current logic, the next interval would be very small (interval * ease), leading to the card being reviewed earlier than one rated "good" (assuming the fixed interval for box 1 is larger).

In org-fc, the concept of "learning cards" is quite arbitrary and not related to the number of fixed intervals.

It would be nice to have this work more like it does in Anki, from my understanding of their algorithm, this would be equivalent to setting the fixed intervals to 1 minute, 10 minutes and 4 days.

Alternatively, the fixed-intervals could be renamed to learning-intervals (1min, 10min) with an additional first-review-interval (e.g. 4 days).

Any card with a box < (length fixed-intervals) would be considered as "learning" and rating a "learning" card as "easy" would move it to box (length learning-intervals) with a new interval of first-review-interval.

One problem I have with these kinds of changes to the algorithm is how hard it is to quantify their effect on the review performance. I've been using sm2-v2 for a few month now and I still can't tell whether it solves the problems I had noticed with the first version.

A good step forward might be to add a new sm2-v3 algorithm with the changes I described above and see how well it works.

I plan on releasing org-fc version 1.0.0 with a bunch of large (breaking) changes in a few months, this would be a good time to deprecate the old algortihms and set the default to v3.

l3kn commented 4 years ago

Closing, moved to https://todo.sr.ht/~l3kn/org-fc/2