def hash_table(): sample_data = HashTable(capacity=100) sample_data["hola"] = "hello" sample_data[98.6] = 37 sample_data[False] = True return sample_data
# Your code here import math import random from hashtable import HashTable import time start = time.time() power = HashTable(12 * 3) factorial = HashTable(12 * 3) division = HashTable(12 * 3) modulo = HashTable(12 * 3) # power = {} # factorial = {} # division = {} # modulo = {} def slowfun_too_slow(x, y): v = math.pow(x, y) v = math.factorial(v) v //= (x + y) v %= 982451653 return v def slowfun(x, y): """ Rewrite slowfun_too_slow() in here so that the program produces the same
def test_hash_table_insertion_and_retrieval(self): ht = HashTable(8) ht.put("key-0", "val-0") ht.put("key-1", "val-1") ht.put("key-2", "val-2") ht.put("key-3", "val-3") ht.put("key-4", "val-4") ht.put("key-5", "val-5") ht.put("key-6", "val-6") ht.put("key-7", "val-7") ht.put("key-8", "val-8") ht.put("key-9", "val-9") return_value = ht.get("key-0") self.assertTrue(return_value == "val-0") return_value = ht.get("key-1") self.assertTrue(return_value == "val-1") return_value = ht.get("key-2") self.assertTrue(return_value == "val-2") return_value = ht.get("key-3") self.assertTrue(return_value == "val-3") return_value = ht.get("key-4") self.assertTrue(return_value == "val-4") return_value = ht.get("key-5") self.assertTrue(return_value == "val-5") return_value = ht.get("key-6") self.assertTrue(return_value == "val-6") return_value = ht.get("key-7") self.assertTrue(return_value == "val-7") return_value = ht.get("key-8") self.assertTrue(return_value == "val-8") return_value = ht.get("key-9") self.assertTrue(return_value == "val-9") ht = HashTable(8) ht.put("key-0", "val-0") ht.put("key-1", "val-1") ht.put("key-2", "val-2") ht.put("key-3", "val-3") ht.put("key-4", "val-4") ht.put("key-5", "val-5") ht.put("key-6", "val-6") ht.put("key-7", "val-7") ht.put("key-8", "val-8") ht.put("key-9", "val-9") ht.put("key-0", "new-val-0") ht.put("key-1", "new-val-1") ht.put("key-2", "new-val-2") ht.put("key-3", "new-val-3") ht.put("key-4", "new-val-4") ht.put("key-5", "new-val-5") ht.put("key-6", "new-val-6") ht.put("key-7", "new-val-7") ht.put("key-8", "new-val-8") ht.put("key-9", "new-val-9") return_value = ht.get("key-0") self.assertTrue(return_value == "new-val-0") return_value = ht.get("key-1") self.assertTrue(return_value == "new-val-1") return_value = ht.get("key-2") self.assertTrue(return_value == "new-val-2") return_value = ht.get("key-3") self.assertTrue(return_value == "new-val-3") return_value = ht.get("key-4") self.assertTrue(return_value == "new-val-4") return_value = ht.get("key-5") self.assertTrue(return_value == "new-val-5") return_value = ht.get("key-6") self.assertTrue(return_value == "new-val-6") return_value = ht.get("key-7") self.assertTrue(return_value == "new-val-7") return_value = ht.get("key-8") self.assertTrue(return_value == "new-val-8") return_value = ht.get("key-9") self.assertTrue(return_value == "new-val-9")
def __init__(self, elements=None): self.ht = HashTable() if elements is not None: for element in elements: self.add(element)
def test_remove2(self): table = HashTable(8, lambda x: x) for item in (range(10, 71, 10)): table.insert(item) self.assertEqual(table.remove(99), -1) self.assertEqual(str(table), "[40, None, 10, 50, 20, 60, 30, 70]")
def hash_2(): hash_2 = HashTable() hash_2.add('sad', 'happy') hash_2.add('tired', 'hyper') return hash_2
def hash_4(): hash_4 = HashTable() hash_4.add('cat', 'tiger') return hash_4
def test_should_not_create_hashtable_with_negative_capacity(): with pytest.raises(ValueError): HashTable(capacity=-100)
def test_should_create_hashtable_with_default_capacity(): assert HashTable().capacity == 8
def test_should_create_hashtable(): assert HashTable(capacity=100) is not None
def test_should_not_create_hashtable_with_zero_capacity(): with pytest.raises(ValueError): HashTable(capacity=0)
def test_should_get_keys_of_empty_hash_table(): assert HashTable(capacity=100).keys == set()
def test_should_get_values_of_empty_hash_table(): assert HashTable(capacity=100).values == []
def test_should_return_duplicate_values(): hash_table = HashTable(capacity=100) hash_table["Alice"] = 24 hash_table["Bob"] = 42 hash_table["Joe"] = 42 assert [24, 42, 42] == sorted(hash_table.values)
def test_len(self): d = HashTable(key_type=ctypes.c_char_p, value_type=ctypes.c_int) self.assertEqual(len(d), 0) d.update(upper_to_i) self.assertEqual(len(d), len(upper_to_i))
def test_should_report_length_of_empty_hash_table(): assert len(HashTable(capacity=100)) == 0
def test_initialize(self): d = HashTable(lower_to_upper.items()) self.assertEqual(len(d), len(lowercase)) for ll, ul in zip(lowercase, uppercase): self.assertEqual(d[ll], ul)
def test_should_report_capacity_of_empty_hash_table(): assert HashTable(capacity=100).capacity == 100
def hash_3(): hash_3 = HashTable() hash_3.add('sad', 'happy') hash_3.add('cat', 'tiger') return hash_3
def test_should_create_empty_pair_slots(): assert HashTable(capacity=3)._slots == [None, None, None]
print('Total words:', len(total)) start = time.time() for word in total: base_dict[word] = base_dict.get(word, 0) + 1 for word in total: word in base_dict end = time.time() - start print('Total different words:', len(base_dict)) print('Frequency of pride:', base_dict['pride']) print('Frequency of prejudice:', base_dict['prejudice']) print('build-in dict: {:.6f}'.format(end)) hash_table = HashTable() print() print('Total words:', len(total)) start = time.time() for word in total: if word not in hash_table: hash_table[word] = 1 else: hash_table[word] += 1 for word in total: hash_table.contains(word) end = time.time() - start
def test_should_not_contain_none_value_when_created(): assert None not in HashTable(capacity=100).values
def test_get2(self): table = HashTable(8, lambda x: x) for item in (range(10, 71, 10)): table.insert(item) self.assertEqual(table.get(99), -1)
def test_should_insert_none_value(): hash_table = HashTable(capacity=100) hash_table["key"] = None assert ("key", None) in hash_table.pairs
def __init__(self, elements=None): self.items = HashTable() self.size = self.items.size for element in elements: self.items.set(element, None)
def test_should_raise_error_on_missing_key(): hash_table = HashTable(capacity=100) with pytest.raises(KeyError) as exception_info: hash_table["missing_key"] assert exception_info.value.args[0] == "missing_key"
def __init__(self, elements=None): self.hashtable = HashTable() self.size = self.hashtable.size
def test_init(self): ht = HashTable(4) assert len(ht.buckets) == 4 assert ht.length() == 0 assert ht.size == 0
def test_hash_table_removes_correctly(self): ht = HashTable(8) ht.put("key-0", "val-0") ht.put("key-1", "val-1") ht.put("key-2", "val-2") ht.put("key-3", "val-3") ht.put("key-4", "val-4") ht.put("key-5", "val-5") ht.put("key-6", "val-6") ht.put("key-7", "val-7") ht.put("key-8", "val-8") ht.put("key-9", "val-9") return_value = ht.get("key-0") self.assertTrue(return_value == "val-0") return_value = ht.get("key-1") self.assertTrue(return_value == "val-1") return_value = ht.get("key-2") self.assertTrue(return_value == "val-2") return_value = ht.get("key-3") self.assertTrue(return_value == "val-3") return_value = ht.get("key-4") self.assertTrue(return_value == "val-4") return_value = ht.get("key-5") self.assertTrue(return_value == "val-5") return_value = ht.get("key-6") self.assertTrue(return_value == "val-6") return_value = ht.get("key-7") self.assertTrue(return_value == "val-7") return_value = ht.get("key-8") self.assertTrue(return_value == "val-8") return_value = ht.get("key-9") self.assertTrue(return_value == "val-9") ht.delete("key-9") ht.delete("key-8") ht.delete("key-7") ht.delete("key-6") ht.delete("key-5") ht.delete("key-4") ht.delete("key-3") ht.delete("key-2") ht.delete("key-1") ht.delete("key-0") return_value = ht.get("key-0") self.assertTrue(return_value is None) return_value = ht.get("key-1") self.assertTrue(return_value is None) return_value = ht.get("key-2") self.assertTrue(return_value is None) return_value = ht.get("key-3") self.assertTrue(return_value is None) return_value = ht.get("key-4") self.assertTrue(return_value is None) return_value = ht.get("key-5") self.assertTrue(return_value is None) return_value = ht.get("key-6") self.assertTrue(return_value is None) return_value = ht.get("key-7") self.assertTrue(return_value is None) return_value = ht.get("key-8") self.assertTrue(return_value is None) return_value = ht.get("key-9") self.assertTrue(return_value is None)
def __init__(self, elements=None): self.set = HashTable() if elements is not None: for element in elements: self.set.set(key=element, value=None)