_count_possible (dict_cursor_next (cursor, c), depth + 1, possible);
}
+static void
+_print_stats (int found[WORD_GAME_MAX_WORD_LENGTH+1],
+ int possible[WORD_GAME_MAX_WORD_LENGTH+1],
+ int found_total,
+ int possible_total)
+{
+ int i;
+
+ for (i = 2; i <= 17; i++)
+ if (possible[i])
+ printf ("%d:(%d/%d) ", i, found[i], possible[i]);
+
+ printf ("total:(%d/%d = %.2f%%)\n",
+ found_total, possible_total,
+ 100 * (double) found_total / possible_total);
+}
+
+
void
word_game_play (const char *puzzle,
dict_t *dict,
tv_stop.tv_sec += time_limit_seconds;
} else {
sprintf (prompt, "> ");
+ remaining = 1;
}
do {
if (time_limit_seconds) {
sprintf (prompt, "%02d:%02d ", minutes, seconds);
}
response = readline (prompt);
- add_history (response);
+ if (response == NULL)
+ break;
if (strlen (response) == 0) {
if (! just_saw_puzzle) {
printf ("%s\n", puzzle);
just_saw_puzzle = TRUE;
} else {
- for (i = 2; i <= 17; i++)
- if (possible[i])
- printf ("%d:(%d/%d) ", i, found[i], possible[i]);
- printf ("total:(%d/%d = %.2f%%)\n",
- found_total, possible_total,
- 100 * (double) found_total / possible_total);
+ _print_stats (found, possible, found_total, possible_total);
}
} else {
dict_entry_t *entry;
just_saw_puzzle = FALSE;
+ add_history (response);
if (response[strlen (response) - 1] == '\n')
response[strlen (response) - 1] = '\0';
entry = dict_lookup (answers, response);
}
} while (remaining > 0);
- printf ("%s\n", puzzle);
-
- printf ("Words you found:\n");
- dict_print_by_length_if (answers, seen_predicate);
+ printf ("\n%s\n", puzzle);
- printf ("\nWords you missed:\n");
- dict_print_by_length_if (answers, unseen_predicate);
printf ("\n");
+ _print_stats (found, possible, found_total, possible_total);
+ printf ("\n");
+
+ if (found_total) {
+ printf ("Words you found:\n");
+ dict_print_by_length_if (answers, seen_predicate);
+ printf ("\n");
+ }
+
+ if (found_total < possible_total) {
+ printf ("Words you missed:\n");
+ dict_print_by_length_if (answers, unseen_predicate);
+ printf ("\n");
+ }
printf ("You found %d of %d words (%.2f%%)\n",
found_total, possible_total,