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()