Ejemplo n.º 1
0
lztrie buildLZTrie(byte *text, uint **ids, byte s)
 { 
    trie T;
    uint n;
    uint *parent;
    byte *letters;
    lztrie LZT;
    unsigned long long aux;
    // first creates a full trie T
#ifdef INDEXREPORT
    ticks= sysconf(_SC_CLK_TCK);
    times(&time); t1 = time.tms_utime;
    printf("  Building LZTrie...\n"); fflush(stdout);
    printf("    Building normal trie...\n"); fflush(stdout);
#endif
    T = createTrie();
    do {
       text = insertTrie(T,text);
    }   
    while (text[-1] != s);
    // now compresses it
#ifdef INDEXREPORT
    times(&time); t2 = time.tms_utime;
    printf("    User time: %f secs\n",(t2-t1)/(float)ticks); fflush(stdout);
    t1 = t2;
    printf("    Representing with parentheses, letters and ids...\n"); fflush(stdout);
#endif
    n       = T->nid;
    aux     = (2*(unsigned long long)n+W-1)/W;
    parent  = malloc(aux*sizeof(uint));
    letters = malloc(n*sizeof(byte));
    aux     = (((unsigned long long)n)*bits(n-1)+W-1)/W;
    *ids    = malloc(aux*sizeof(uint));
    representTrie(T,parent,letters,*ids,NULL,bits(n-1));
#ifdef INDEXREPORT
    times(&time); t2 = time.tms_utime;
    printf("    User time: %f secs\n",(t2-t1)/(float)ticks); fflush(stdout);
    t1 = t2;
    printf("    Freing trie...\n"); fflush(stdout);
#endif
    destroyTrie(T);
#ifdef INDEXREPORT
    times(&time); t2 = time.tms_utime;
    printf("    User time: %f secs\n",(t2-t1)/(float)ticks); fflush(stdout);
    t1 = t2;
    printf("    Creating compressed trie...\n"); fflush(stdout);
#endif
    LZT = createLZTrie(parent,letters,*ids,n);
#ifdef INDEXREPORT
    times(&time); t2 = time.tms_utime;
    printf("    User time: %f secs\n",(t2-t1)/(float)ticks); fflush(stdout);
    t1 = t2;
    printf("  End of LZTrie\n"); fflush(stdout);
#endif
    return LZT;
 }
Ejemplo n.º 2
0
int main() {
    int n, flag;
    char str[25];
    while(scanf("%d", &n) == 1) {
        TrieSize = 0;
        memset(&Node[0], 0, sizeof(Node[0]));
        while(n--) {
            scanf("%s", str);
            insertTrie(str);
        }
        scanf("%d", &n);
        while(n--) {
            scanf("%s", str);
            flag = insertTrie(str);
            if(flag)    puts("yes");
            else    puts("no");
        }
    }
    return 0;
}
Trie preAC(unsigned char **mots, int nb_max) {
/* Création de l'etat q0 et du trie */
Trie trie = createTrie(nb_max * 60);
/* Taille max d'un mot  = 60 */
int i;
/* Inserer dans le trie */
for (i = 0; i < nb_max; i++) {insertTrie(trie, mots[i]);}
/* Completer la racine */
completer_trie(trie);
/* Completer avec les supps*/
complete(trie);
/* return */
return trie;
}
int main() {
	int t;
	char buf[35];
	scanf("%d", &t);
	getchar();
	getchar();
	while(t--) {
		int n = 0;
		memset(&Node[0], 0, sizeof(Node[0]));
		TrieSize = 0;
		while(gets(buf)) {
			if(buf[0] == '\0')	
				break;
			insertTrie(buf);
			n++;
		}
		printAns(n, 0, 0);
		if(t)
			puts("");
	}
    return 0;
}
Ejemplo n.º 5
0
bool Dictionary::loadDictionary(string fileName)
{
	int stringSize, totWords = 0, sucWords = 0;
	string full, word, definition;
	fstream input;
	
	input.open(fileName.c_str(), ios::in);
	
	if(!(input.is_open()))
	{
		return false;
	}
	
	while(getline(input, full))
	{
		word = "";
		definition = "";
		stringSize = full.length();
		
		for(int i = 0; i < stringSize; i++)
		{
			if(full[i] == ':')
			{
				for(int j = 0; j < i; j++)
				{
					word += full[j];
				}
				
				for(int k = i; k < stringSize; k++)
				{
					if(isalpha(full[k]))
					{
						for(int l = k; l < stringSize; l++)
						{
							definition += full[l];
						}
						
						totWords++;
						break;
					}
				}
				
				break;
			}
		}

		if(insertTrie(word, definition))
		{
			sucWords++;
		}
	}
	
	input.close();
	
	if(sucWords == totWords)
	{
		return true;
	}
	else
	{
		return false;
	}
}