]> git.cworth.org Git - mnemon/blobdiff - mnemon.c
Print before-and-after bin numbers
[mnemon] / mnemon.c
index c0efa6902e50281e91a5d4cc699ab40a6041bd70..d28657bfe20d8a4c877bbbb30edf98d2694a74a7 100644 (file)
--- a/mnemon.c
+++ b/mnemon.c
@@ -379,6 +379,16 @@ mnemon_get_bin (mnemon_t   *mnemon,
     return bin;
 }
 
+static void
+mnemon_remove_bin (mnemon_t    *mnemon,
+                  bin_t        *bin)
+{
+    int i = bin - mnemon->bins;
+
+    memmove (bin, bin + 1, (mnemon->num_bins - i) * sizeof (bin_t));
+    mnemon->num_bins--;
+}
+
 static void
 chomp (char *s)
 {
@@ -627,26 +637,28 @@ mnemon_do_challenges (mnemon_t *mnemon)
        printf ("%s\n", item->challenge);
 
        response = readline ("> ");
-       if (response == NULL)
+       if (response == NULL) {
+           printf ("\n");
            break;
+       }
 
        correct = (strcmp (response, item->response) == 0);
 
        bin_remove_item (bin, item_index);
+       if (bin->num_items == 0)
+           mnemon_remove_bin (mnemon, bin);
 
        if (correct) {
-           printf ("Correct!\n\n");
-           if (item->count < 0)
-               item->count = 1;
-           else
-               item->count++;
+           printf ("Correct! (Moving from %d to ", item->count);
+           item->count++;
+           printf ("%d)\n\n", item->count);
        } else {
-           printf ("  %s is the correct answer.\n\n",
-                   item->response);
+           printf ("  %s is the correct answer. (Moving from %d to ",
+                   item->response, item->count);
+           item->count--;
            if (item->count > 0)
                item->count = -1;
-           else
-               item->count--;
+           printf ("%d)\n\n", item->count);
        }
 
        bin = mnemon_get_bin (mnemon, item->count);
@@ -660,7 +672,7 @@ main (int argc, char *argv[])
 {
     mnemon_t mnemon;
 
-    srand (time (NULL));
+    srand (1);
 
     mnemon_init (&mnemon);