author | Eugen Sawin <sawine@me73.com> |
Tue, 19 Jul 2011 15:25:16 +0200 | |
changeset 15 | a703c0e88e47 |
parent 4 | 7301096bb430 |
permissions | -rw-r--r-- |
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() |