src/chaining_hash.py
changeset 4 7301096bb430
child 5 ebfa1b5c4ac7
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/src/chaining_hash.py	Mon Jun 20 20:29:03 2011 +0200
     1.3 @@ -0,0 +1,32 @@
     1.4 +"""
     1.5 +Author: Eugen Sawin <sawine@informatik.uni-freiburg.de>
     1.6 +"""
     1.7 +
     1.8 +def main():    
     1.9 +    args = parse_arguments()
    1.10 +    table = {}
    1.11 +    for key in args.values.split():
    1.12 +        table = chained_hash(int(key), table, int(args.table_size))
    1.13 +    for k in range(int(args.table_size)):
    1.14 +        if k not in table:
    1.15 +            table[k] = []
    1.16 +        print "%i: %s" % (k, table[k])
    1.17 +
    1.18 +def chained_hash(k, table, size):
    1.19 +    code = k % size
    1.20 +    if code in table:
    1.21 +        table[code].append(k)
    1.22 +    else:
    1.23 +        table[code] = [k]
    1.24 +    return table
    1.25 +
    1.26 +from argparse import ArgumentParser
    1.27 +
    1.28 +def parse_arguments():
    1.29 +    parser = ArgumentParser(description="")
    1.30 +    parser.add_argument("table_size", help="size of the hash table")
    1.31 +    parser.add_argument("values", help="values")    
    1.32 +    return parser.parse_args()
    1.33 +
    1.34 +if __name__ == "__main__":
    1.35 +    main()