X-Git-Url: https://git.cworth.org/git?p=wordgame;a=blobdiff_plain;f=rack.c;h=e3ef2096ba41cb9aa4d343d59f89eba9f823ccbe;hp=968a9ee20812565939ae3079ad264d769eccfc52;hb=5e131ba1815778bc6ea172cc4ca4f0c478edd316;hpb=17112b7f9d47ed17c86702c1bd815b0e1b9a6281 diff --git a/rack.c b/rack.c index 968a9ee..e3ef209 100644 --- a/rack.c +++ b/rack.c @@ -23,54 +23,6 @@ #include #include -static const char *subanagram_anagram; -static char subanagram_enumerate_word[WORD_GAME_MAX_WORD_LENGTH]; -static dict_t *subanagram_enumerate_answers; - -static void -subanagram_enumerate (dict_cursor_t cursor, - uint8_t seen) -{ - char c; - unsigned int i, last; - uint8_t next_seen; - - if (cursor == DICT_CURSOR_NIL) - return; - - if (DICT_ENTRY_IS_WORD (dict_cursor_resolve (cursor))) - dict_add_word (subanagram_enumerate_answers, subanagram_enumerate_word); - - last = strlen (subanagram_enumerate_word); - - for (i = 0; i < strlen (subanagram_anagram); i++) { - if (seen & (1 << i)) - continue; - next_seen = seen | (1 << i); - c = subanagram_anagram[i]; - if (c == '?' || c == '_') { - for (c = 'a'; c <= 'z'; c++) { - subanagram_enumerate_word[last] = c; - subanagram_enumerate (dict_cursor_next (cursor, c), next_seen); - } - } else { - subanagram_enumerate_word[last] = c; - subanagram_enumerate (dict_cursor_next (cursor, c), next_seen); - } - subanagram_enumerate_word[last] = '\0'; - } -} - -static void -subanagram_expand (const char *anagram, dict_t *dict, dict_t *answers) -{ - subanagram_anagram = anagram; - memset (subanagram_enumerate_word, '\0', WORD_GAME_MAX_WORD_LENGTH); - subanagram_enumerate_answers = answers; - - subanagram_enumerate (dict_root (dict), 0); -} - static int character_compare (const void *_a, const void *_b)