X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=rack.c;h=f7203f8806daf9a49434618ea5145bb8b8f60acf;hb=32ecf2fa7f7f91e8b4d0d3a5bf40314fda1090fb;hp=968a9ee20812565939ae3079ad264d769eccfc52;hpb=17112b7f9d47ed17c86702c1bd815b0e1b9a6281;p=wordgame diff --git a/rack.c b/rack.c index 968a9ee..f7203f8 100644 --- a/rack.c +++ b/rack.c @@ -1,7 +1,7 @@ /* * Copyright © 2006 Carl Worth * - * This program is free software; you can redistribute it and\/or modify + * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. @@ -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)