#include #include using namespace std; unsigned int hashFunc1(unsigned int a) { return 0; } unsigned int hashFunc2(unsigned int a) { return a; } unsigned int hashFunc3(unsigned int a) { return (a * (a - 3)); } unsigned int hashFunc4(unsigned int a) { return hashFunc3(hashFunc3(a)); } unsigned int hashFunc5(unsigned int a) { // Pay particular attention to this one: why is doing this a bad idea? srand(a); return rand(); } unsigned int hashFunc6(string a) { unsigned int ret = 0; unsigned int s = a.size(); if (s > 5) s = 5; for (unsigned int i = 0; i < s; ++i) { ret += a[i]; } return ret; } unsigned int hashFunc7(string a) { unsigned int ret = 0; for (unsigned int i = 0; i < a.size(); ++i) { ret += a[i]; } return ret; } unsigned int hashFunc8(string a) { unsigned int ret = 0; for (unsigned int i = 0; i < a.size(); ++i) { unsigned int temp = ret >> (32 - 5); ret <<= 5; ret |= temp; ret ^= a[i]; } return ret; }