Spaced repetition is a memory learning method that allows you to maximise recall, while minimising learning time. Essentially it tries to present you with problems you are having trouble with more often that those that you have already shown you can do well. You can read more about spaced repetition at the Wikipedia Spaced Repetition Article.
You can create a spaced repetition set by enabling the "Spaced repetition" option for the problem selection type (instead of the default "Random Selection"). The selector can be found just above the problem set ordering options.
For spaced repetition sets, you get two new numbers next to the problem set count at the bottom of the problem board, for example: Problem Set: TestSR ( 91 in set) ( Learning: 8, Scheduled: 4 )
"Learning" is the number of problems in the set that we are currently actively learning.
"Scheduled" is the number of problems that are currently due for review.
When "Scheduled" = 0, each time you do a problem, a new problem will be added to the set for learning. When "Learning" is the same as the number of problems in the set , trying to do problems when Scheduled = 0 will lead to problems being done in order of the next one that would be scheduled (i.e. you'll be solving problems "early", before they are due for review). If you can't be given problems early without repeating the last scheduled problem, then you'll be told you need to wait for the next scheduled problem to be due.
If you get a problem wrong, it will be scheduled for serving again in 5 minutes. The first time you get a problem correct, it is scheduled for review in 1 day from when you solved it. After the second correct attempt in a row, the next problem serving time is determined by the gap between the last two times you saw the problem, and a factor estimating how difficult the problem was for you. The difficulty factor is currently decided by the ratio of your most recent solve time on the problem compared to the average solve time for all users. By default, the problem will be scheduled to be served again at a time that is two times longer than the last time gap between solving it. If you solve it under the average time, then you will not see it again for up to 3 times longer (depending on how much quicker you solved it compared to average). If you solve it slower than the average time, then the gap to the next view will be reduced to as little as 1.3 times the last gap between solutions (again depending on exactly how much slower).
Over time, the problems you know well will get increasingly large gaps between serving times, those you are having trouble with will get served more often, until they too become "well known".
You can use most of the problem search/custom set options with spaced repetition sets, although there are some exceptions. Ordered sets, are not compatible with spaced repetition, as the spaced repetition scheduling will override the sort order of the set. Also some sets such as "problems I've never seen before" don't make sense with SR sets, as they will lead problems to drop out of the set, as soon as you've done them the first time. Merged sets are also currently incompatible with spaced repetition sets, so merged sets where one or more subsets are spaced repetition set types will not work as expected.
It can be useful to create spaced repetition sets based on a custom tag as the search criteria , so you can add specific problems to your spaced repetition set by tagging the problems. However, you can also use other search criteria such as "all forks from 1200-1400" etc to define set membership.
gap_factor=max(min(log(DIFFICULTY_ESTIMATE)+Spacing Growth Rate),Maximum Space Grow),Minimum Space Growth)
andnext gap interval = last_gap * gap_factor
So for example if the difficulty estimate is 1.0, Spacing Growth Rate is 2.0 and Maximum and Minimum space growth is 3.0 and 1.0, and the last gap between correct attempts on the problem was 10 days. The gap factor will be:
max(min(log(1.0)+2.0,3.0),1.0)
or
max(min(0+2.0,3.0),1.0)
=
2.0
so the next attempt on this problem will be scheduled 10 days *2.0 = 20 days into the future. A more difficult problem (i.e. one which was solved more slowly) would have a smaller gap factor, and would be served up again more quickly, how quickly would depend on how slow the attempt was, and the value of the Minimum Space Growth parameter.
DIFFICULTY_ESTIMATE is a value that approximates how hard you found your last attempt on the problem. The value used here depends on the difficulty estimate method chosen.
The current list of parameters are: