Formerly, a session would only exit after consecutively demonstrating
mastery of some number of items. This had the affect of skewing the
set positive, and potentially doing a large amount of review without
introducing any new material.
The original intent of the mastery requirement was simply to provide
some review of previously learned material after introducing new
material. So we now simply require some number of items to be mastered,
but we don't require them to be achieved consecutively, (that is,
we don't reset the count at any miss).
mnemon->bins = NULL;
mnemon->to_introduce = 3;
mnemon->bins = NULL;
mnemon->to_introduce = 3;
- mnemon->to_master = 10;
item->score = 1;
mnemon->unlearned--;
printf ("You got it!");
item->score = 1;
mnemon->unlearned--;
printf ("You got it!");
+ if (mnemon->unlearned == 0 && mnemon->to_master == 0) {
+ mnemon->to_master = 10;
+ mnemon->mastered = 0;
+ }
} else if (item->score < 0) {
printf ("Yes---just give me %d more.",
- item->score);
} else if (item->score < 0) {
printf ("Yes---just give me %d more.",
- item->score);
printf ("On your first try, no less!");
} else {
printf ("Masterful (%dx).", item->score);
printf ("On your first try, no less!");
} else {
printf ("Masterful (%dx).", item->score);
+ if (mnemon->to_master)
+ mnemon->mastered++;
}
} else {
printf (" %s is the correct answer.",
}
} else {
printf (" %s is the correct answer.",
if (item->score > 0)
printf ( " Oops, you knew that, right?\n ");
mnemon->unlearned++;
if (item->score > 0)
printf ( " Oops, you knew that, right?\n ");
mnemon->unlearned++;
/* We go to -2 to force a little extra reinforcement
* when re-learning an item, (otherwise, it will often
* get asked again immediately where it is easy to get
/* We go to -2 to force a little extra reinforcement
* when re-learning an item, (otherwise, it will often
* get asked again immediately where it is easy to get
if (mnemon->to_introduce)
if (mnemon->to_introduce)
- printf ("%d to come.", mnemon->to_introduce);
- if (mnemon->to_introduce && mnemon->unlearned)
- printf (" ");
+ printf ("%d to come. ", mnemon->to_introduce);
- printf ("%d still unlearned.", mnemon->unlearned);
- if (mnemon->to_introduce == 0 && mnemon->unlearned == 0) {
+ printf ("%d still unlearned. ", mnemon->unlearned);
+ if (mnemon->to_master) {
if (mnemon->mastered < mnemon->to_master)
printf ("%d items to master",
mnemon->to_master - mnemon->mastered);
else
printf ("Great job!");
if (mnemon->mastered < mnemon->to_master)
printf ("%d items to master",
mnemon->to_master - mnemon->mastered);
else
printf ("Great job!");
bin = mnemon_get_bin (mnemon, item->score);
bin = mnemon_get_bin (mnemon, item->score);
mnemon_handle_response (mnemon, bin, item_index,
item, response);
mnemon_handle_response (mnemon, bin, item_index,
item, response);
- } while (mnemon->mastered <= mnemon->to_master);
+ } while (mnemon->mastered < mnemon->to_master);