mnemon->bins = NULL;
mnemon->to_introduce = 10;
- mnemon->to_master = 0;
+ mnemon->to_master = 10;
mnemon->unlearned = 0;
mnemon->mastered = -1;
}
if (correct) {
item->score++;
+ mnemon->to_master--;
/* We reserve an item score of 0 for an item that has
* never been asked. */
if (item->score == 0) {
item->score = 1;
mnemon->unlearned--;
+ mnemon->to_master--;
printf ("You got it!");
} else if (item->score < 0) {
printf ("Yes---just give me %d more.",
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.",
* negative. */
if (item->score >= 0) {
if (item->score > 0)
- printf (" Oops, you knew that, right? (%d x)\n ",
+ printf (" Oops, you knew that, right? (%dx)\n ",
item->score);
mnemon->unlearned++;
+ /* We add three here, (rather than just 2 to track the
+ * change in the item's score below), as an extra
+ * penalty. If the user is forgetting stuff learned
+ * previously, then more time should be spent on mastering
+ * than learning new items. */
+ mnemon->to_master += item->score + 3;
/* 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
item->score = -2;
} else {
item->score--;
+ mnemon->to_master++;
}
}
- if (mnemon->to_introduce == 0 &&
- mnemon->unlearned == 0 &&
- mnemon->to_master == 0)
- {
- mnemon->to_master = 10;
- mnemon->mastered = 0;
- }
-
printf (" ");
if (mnemon->to_introduce)
printf ("%d to come. ", mnemon->to_introduce);
if (mnemon->unlearned)
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->to_introduce == 0 && mnemon->to_master > 0)
+ printf ("%d items to master", mnemon->to_master);
printf ("\n\n");
bin = mnemon_get_bin (mnemon, item->score);
mnemon_handle_response (mnemon, bin, item_index,
item, response);
- } while (mnemon->mastered < mnemon->to_master);
+ } while (mnemon->to_introduce ||
+ mnemon->unlearned ||
+ mnemon->to_master > 0);
+
+ printf ("Great job.\n");
}
int