src/chaining_hash.py
author Eugen Sawin <sawine@me73.com>
Mon, 25 Jul 2011 17:53:35 +0200
changeset 16 fbceeed002c5
parent 4 7301096bb430
permissions -rw-r--r--
Exercise 10.
sawine@4
     1
"""
sawine@4
     2
Author: Eugen Sawin <sawine@informatik.uni-freiburg.de>
sawine@4
     3
"""
sawine@4
     4
sawine@4
     5
def main():    
sawine@4
     6
    args = parse_arguments()
sawine@4
     7
    table = {}
sawine@4
     8
    for key in args.values.split():
sawine@5
     9
        table = chained_hash(int(key), table, args.table_size)
sawine@5
    10
    for k in range(args.table_size):
sawine@4
    11
        if k not in table:
sawine@4
    12
            table[k] = []
sawine@4
    13
        print "%i: %s" % (k, table[k])
sawine@4
    14
sawine@4
    15
def chained_hash(k, table, size):
sawine@4
    16
    code = k % size
sawine@4
    17
    if code in table:
sawine@4
    18
        table[code].append(k)
sawine@4
    19
    else:
sawine@4
    20
        table[code] = [k]
sawine@4
    21
    return table
sawine@4
    22
sawine@4
    23
from argparse import ArgumentParser
sawine@4
    24
sawine@4
    25
def parse_arguments():
sawine@4
    26
    parser = ArgumentParser(description="")
sawine@5
    27
    parser.add_argument("table_size", type=int, help="size of the hash table")
sawine@4
    28
    parser.add_argument("values", help="values")    
sawine@4
    29
    return parser.parse_args()
sawine@4
    30
sawine@4
    31
if __name__ == "__main__":
sawine@4
    32
    main()