initial commit
This commit is contained in:
commit
39f56a3b10
83 files changed
+3583
No files matched your search
@@ -0,0 +1,45 @@
|
||||
class Student:
|
||||
def __init__(self, number, name, email):
|
||||
self.number = number
|
||||
self.name = name
|
||||
self.email = email
|
||||
self.MAX_HASH =100000
|
||||
|
||||
def __str__(self):
|
||||
return f"Student: {self.name} ({self.email}, {self.number})"
|
||||
|
||||
def __hash__(self):
|
||||
return (id(self.number) + id(self.name) + id(self.email)) % self.MAX_HASH
|
||||
|
||||
|
||||
class HashTable:
|
||||
def __init__(self, elements):
|
||||
self.bucket_size = len(elements) * 3
|
||||
self.buckets = [[] for i in range(self.bucket_size)]
|
||||
self._assign_buckets(elements)
|
||||
self.insertion_order = []
|
||||
|
||||
def __iter__(self):
|
||||
ret_list = []
|
||||
for index, obj_id in self.insertion_order:
|
||||
for obj in self.buckets[index]:
|
||||
if id(obj) == obj_id:
|
||||
ret_list.append(obj)
|
||||
return iter(ret_list)
|
||||
|
||||
def _assign_buckets(self, elements):
|
||||
for obj in elements:
|
||||
hashed_value = hash(obj)
|
||||
index = hashed_value % self.bucket_size
|
||||
self.buckets[index].append(obj)
|
||||
self.insertion_order.insert((index, id(obj)))
|
||||
|
||||
def get_value(self,input_key):
|
||||
return self.buckets[input_key]
|
||||
|
||||
def main():
|
||||
arthur = Student("097", "Arthur", "artur@blade.hex")
|
||||
eleanor = Student("098", "Eleanor", "eleano@plague.hex")
|
||||
aoi = Student("099", "Aoi", "aoi@magnet.hex")
|
||||
hash_table = HashTable([arthur,eleanor,aoi])
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
|
||||
class Student:
|
||||
|
||||
def __init__(self, number, name, email):
|
||||
self.number = number
|
||||
self.name = name
|
||||
self.email = email
|
||||
self.MAX_HASH =100000
|
||||
|
||||
def __str__(self):
|
||||
return f"Student: {self.name} ({self.email}, {self.number})"
|
||||
|
||||
def __hash__(self):
|
||||
return (id(self.number) + id(self.name) + id(self.email)) % self.MAX_HASH
|
||||
|
||||
def main():
|
||||
student = Student("0975", "Arthur", "arthur@blade.hex")
|
||||
print(hash(student))
|
||||
for _ in range(10):
|
||||
main()
|
||||
Reference in new issue
Block a user