1234567891011121314151617181920212223242526272829303132333435363738 |
- #!/usr/bin/env python
- """
- This example shows how to use the function generate_hash.
- generate_hash(kdic, Hash)
- returns hash functions f1 and f2, and G for a perfect minimal hash.
- Input is dictionary 'kdic' with the keys and desired hash values.
- 'Hash' is a random hash function generator, that means Hash(N) returns a
- returns a random hash function which returns hash values from 0..N-1.
- """
- import sys
- import random, string
- sys.path.append('..')
- from perfect_hash import generate_hash
- month = dict(zip('jan feb mar apr may jun jul aug sep oct mov dec'.split(),
- range(1, 13)))
- def mkRandHash(N):
- """
- Return a random hash function which returns hash values from 0..N-1.
- """
- junk = "".join(random.choice(string.letters + string.digits)
- for i in xrange(10))
- return lambda key: hash(junk + str(key)) % N
- f1, f2, G = generate_hash(month, mkRandHash)
- for k, h in month.items():
- assert h == ( G[f1(k)] + G[f2(k)] ) % len(G)
- print 'OK'
|