From bad31e1c1cdc6af7c3f6232f080ea71d58608669 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=B0=D1=80=D1=8C=D1=8F=20=D0=A2=D0=BE=D1=80=D0=B3?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0?= Date: Sat, 20 Dec 2025 15:39:05 +0300 Subject: [PATCH 1/2] Added class HashTable --- src/reTest/hash_table.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 src/reTest/hash_table.py diff --git a/src/reTest/hash_table.py b/src/reTest/hash_table.py new file mode 100644 index 0000000..28ba71a --- /dev/null +++ b/src/reTest/hash_table.py @@ -0,0 +1,33 @@ +class HashTable: + def __init__(self): + self.size = 128 + self.hash_table = [[] for _ in range(self.size)] + + def _hash(self, value): + summ = 0 + for symbol in value: + summ += ord(symbol) + return summ % self.size + + def put(self, key, value): + index = self._hash(key) + table = self.hash_table[index] + if key not in table: + self.hash_table[index].append((key, value)) + + def get(self, key): + index = self._hash(key) + table = self.hash_table[index] + for i, (k, v) in enumerate(table): + if key == k: + return v + return None + + def remove(self, key): + index = self._hash(key) + table = self.hash_table[index] + for i, (k, v) in enumerate(table): + if key == k: + self.hash_table[index].pop(i) + break + return From 2d65d28bb61bcf14123b27ebc0a9d1ebd477c520 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=B0=D1=80=D1=8C=D1=8F=20=D0=A2=D0=BE=D1=80=D0=B3?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0?= Date: Sat, 20 Dec 2025 15:39:43 +0300 Subject: [PATCH 2/2] Added test for class HashTable --- tests/test_hash_table.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 tests/test_hash_table.py diff --git a/tests/test_hash_table.py b/tests/test_hash_table.py new file mode 100644 index 0000000..4308fea --- /dev/null +++ b/tests/test_hash_table.py @@ -0,0 +1,26 @@ + +from reTest.hash_table import HashTable + + +def test_hash_table_functions(): + hash_table = HashTable() + + hash_table.put("fiona", 4) + hash_table.put("belle", 2) + hash_table.put("aurora", 4) + hash_table.put("ariel", 1) + hash_table.put("cinderella", 3) + + hash_table.remove("fiona") + + assert hash_table.get("fiona") is None + + assert hash_table.get("aurora") == 4 + + assert hash_table._hash("ariel") == 525 % 128 + + +def test_empty(): + hash_table = HashTable() + + assert hash_table.get("aurora") is None