コード例 #1
0
def hash_table():
    sample_data = HashTable(capacity=100)
    sample_data["hola"] = "hello"
    sample_data[98.6] = 37
    sample_data[False] = True
    return sample_data
コード例 #2
0
# 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
コード例 #3
0
    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")
コード例 #4
0
 def __init__(self, elements=None):
     self.ht = HashTable()
     if elements is not None:
         for element in elements:
             self.add(element)
コード例 #5
0
 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]")
コード例 #6
0
def hash_2():
    hash_2 = HashTable()
    hash_2.add('sad', 'happy')
    hash_2.add('tired', 'hyper')
    return hash_2
コード例 #7
0
def hash_4():
    hash_4 = HashTable()
    hash_4.add('cat', 'tiger')
    return hash_4
コード例 #8
0
def test_should_not_create_hashtable_with_negative_capacity():
    with pytest.raises(ValueError):
        HashTable(capacity=-100)
コード例 #9
0
def test_should_create_hashtable_with_default_capacity():
    assert HashTable().capacity == 8
コード例 #10
0
def test_should_create_hashtable():
    assert HashTable(capacity=100) is not None
コード例 #11
0
def test_should_not_create_hashtable_with_zero_capacity():
    with pytest.raises(ValueError):
        HashTable(capacity=0)
コード例 #12
0
def test_should_get_keys_of_empty_hash_table():
    assert HashTable(capacity=100).keys == set()
コード例 #13
0
def test_should_get_values_of_empty_hash_table():
    assert HashTable(capacity=100).values == []
コード例 #14
0
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)
コード例 #15
0
    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))
コード例 #16
0
def test_should_report_length_of_empty_hash_table():
    assert len(HashTable(capacity=100)) == 0
コード例 #17
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)
コード例 #18
0
def test_should_report_capacity_of_empty_hash_table():
    assert HashTable(capacity=100).capacity == 100
コード例 #19
0
def hash_3():
    hash_3 = HashTable()
    hash_3.add('sad', 'happy')
    hash_3.add('cat', 'tiger')
    return hash_3
コード例 #20
0
def test_should_create_empty_pair_slots():
    assert HashTable(capacity=3)._slots == [None, None, None]
コード例 #21
0
    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
コード例 #22
0
def test_should_not_contain_none_value_when_created():
    assert None not in HashTable(capacity=100).values
コード例 #23
0
 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)
コード例 #24
0
def test_should_insert_none_value():
    hash_table = HashTable(capacity=100)
    hash_table["key"] = None
    assert ("key", None) in hash_table.pairs
コード例 #25
0
	def __init__(self, elements=None):
		self.items = HashTable()
		self.size = self.items.size

		for element in elements:
			self.items.set(element, None)
コード例 #26
0
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"
コード例 #27
0
 def __init__(self, elements=None):
     self.hashtable = HashTable()
     self.size = self.hashtable.size
コード例 #28
0
 def test_init(self):
     ht = HashTable(4)
     assert len(ht.buckets) == 4
     assert ht.length() == 0
     assert ht.size == 0
コード例 #29
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)
コード例 #30
0
 def __init__(self, elements=None):
     self.set = HashTable()
     if elements is not None:
         for element in elements:
             self.set.set(key=element, value=None)