]>
git.datanom.net - hashtable.git/blob - test.c
9 uint64_t word_hash_func(const char* name
, size_t length
) {
10 uint64_t hash_value
= 0;
11 for (size_t i
= 0; i
< length
; i
++) {
12 hash_value
+= name
[i
];
13 hash_value
= hash_value
* name
[i
];
18 void generate_random_word(char* buffer
, size_t length
) {
19 for (size_t i
= 0; i
< length
- 1; i
++) {
20 buffer
[i
] = 'a' + (rand() % 26);
22 buffer
[length
- 1] = 0;
25 int main(int argc
, char** argv
) {
27 printf("usage: %s <wordlist filename> <num guesses>\n", argv
[0]);
31 char* filename
= argv
[1];
32 uint32_t num_guesses
= atol(argv
[2]);
34 Hashtable
* table
= hash_table_create(str_hash
, str_equal
);
36 FILE* fp
= fopen(filename
, "r");
37 char* buffer
= calloc(sizeof(char), MAX_LINE
);
38 uint32_t numwords
= 0;
40 while (!feof(fp
) && fgets(buffer
, MAX_LINE
, fp
) != NULL
) {
41 buffer
[strcspn(buffer
, "\r\n")] = 0;
42 char* newentry
= malloc(strlen(buffer
) + 1);
43 strcpy(newentry
, buffer
);
44 bool result
= hash_table_insert(table
, newentry
, newentry
);
45 if (result
== false) {
46 printf("Failed [%u] storing %s\n", ++failed
, newentry
);
53 printf("Loaded %d words into the table.\n", numwords
);
55 //hash_table_print(table);
56 uint32_t good_guesses
= 0;
57 const int shortest_guess
= 2;
58 const int longest_guess
= 15;
60 for (uint32_t i
= 0; i
< num_guesses
; i
++) {
61 generate_random_word(buffer
, shortest_guess
+
62 (rand() % (longest_guess
- shortest_guess
)));
63 if ((data
= hash_table_lookup(table
, buffer
)) != NULL
) {
64 printf("Lookup: %s - Found: %s\n", buffer
, (char*) data
);
69 printf("%u out of %u guesses were in the table\n", good_guesses
, num_guesses
);
72 hash_table_destroy(table
);
This page took 0.069181 seconds and 6 git commands to generate.