src/double_hash.py
author Eugen Sawin <sawine@me73.com>
Tue, 14 Jun 2011 22:12:19 +0200
changeset 3 b3a61fa4c8d7
permissions -rw-r--r--
Added double hash.
     1 """
     2 Name: string_hash -  a string hashing program
     3 Description: Basic string hashing program according to Theory I lecture.
     4 Author: Eugen Sawin <sawine@informatik.uni-freiburg.de>
     5 """
     6 
     7 def main():    
     8     args = parse_arguments()
     9     used = set()
    10     for key in args.values.split():
    11         print "%s: %i" % (key, double_hash(int(key), used))
    12 
    13 def double_hash(k, used):
    14     j = 0
    15     code = (h(k) - s(j, k)) % 15
    16     while code in used:
    17         j += 1
    18         code = (h(k) - s(j, k)) % 15
    19     used.add(code)
    20     return code
    21 
    22 def s(j, k):
    23     return j * h2(k)
    24 
    25 def h(k):
    26     return k % 15
    27 
    28 def h2(k):
    29     return 1 + (k % 13) 
    30 
    31 from argparse import ArgumentParser
    32 
    33 def parse_arguments():
    34     parser = ArgumentParser(description="Returns the hash for given string using the double-hash technique.")
    35     parser.add_argument("values", help="values")    
    36     return parser.parse_args()
    37 
    38 if __name__ == "__main__":
    39     main()