From bcadb29f5f2b29e23aa744bbc587fcb61aba8f4a Mon Sep 17 00:00:00 2001 From: Julien Lengrand-Lambert Date: Thu, 21 Nov 2013 11:50:11 +0100 Subject: [PATCH] Modifies hash method to stay within the range of the hash table --- 02_hash_maps/hm.py | 12 +++++++++++- 02_hash_maps/hm_test.py | 2 +- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/02_hash_maps/hm.py b/02_hash_maps/hm.py index 5daa599..f807ad8 100644 --- a/02_hash_maps/hm.py +++ b/02_hash_maps/hm.py @@ -8,7 +8,17 @@ class HashMap(): def __init__(self, hash_size=513): self._hash_size = hash_size self._size = 0 + self.hmap = [] * self._hash_size + def add(self, value): + """ + Adds the provided value to the hashmap + """ + key = self._hash(value) + self.hmap[key] = value + + # TODO: Keep implementing + def size(self): return self._size @@ -26,6 +36,6 @@ class HashMap(): for letter in value: h = (h << 4) + ord(letter) - return h + return h % self._hash_size diff --git a/02_hash_maps/hm_test.py b/02_hash_maps/hm_test.py index d986053..90c38de 100644 --- a/02_hash_maps/hm_test.py +++ b/02_hash_maps/hm_test.py @@ -30,7 +30,7 @@ class test_hash_map(unittest.TestCase): self.assertEqual(hm._hash(value), ord(value)) value = "test" - self.assertEqual(hm._hash(value), 502948) + self.assertEqual(hm._hash(value), 208) value = "" self.assertRaises(Exception, lambda x : hm._hash(value))