diff options
author | Zhongheng Liu <z.liu@outlook.com.gr> | 2025-03-11 15:25:56 +0200 |
---|---|---|
committer | Zhongheng Liu <z.liu@outlook.com.gr> | 2025-03-11 15:25:56 +0200 |
commit | 0e6d874c4abb734a915f719f0a507724c7a754fa (patch) | |
tree | 03c1d24cba09bc2d1216f45e930c2d877e269a7b /notebooks/esq_ch_26.py | |
parent | 9568147aefac22f8928460220560c62bbd972c99 (diff) | |
download | cs-y13-0e6d874c4abb734a915f719f0a507724c7a754fa.tar.gz cs-y13-0e6d874c4abb734a915f719f0a507724c7a754fa.tar.bz2 cs-y13-0e6d874c4abb734a915f719f0a507724c7a754fa.zip |
feat: add ESQs
Diffstat (limited to 'notebooks/esq_ch_26.py')
-rw-r--r-- | notebooks/esq_ch_26.py | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/notebooks/esq_ch_26.py b/notebooks/esq_ch_26.py new file mode 100644 index 0000000..1ef4dc7 --- /dev/null +++ b/notebooks/esq_ch_26.py @@ -0,0 +1,36 @@ +import pickle +import random +DATA_FILE = "CustomerData.DAT" +class CustomerRecord: + def __str__(self) -> str: + return f"{self.CustomerID}" + def __init__(self): + self.CustomerID = random.randint(100001, 1000000) + self.CustomerName = "" + self.TelephoneNumber = "" + self.OrderValueTotal = 0 +customers = [CustomerRecord() for i in range(0, 1000)] +def Hash(CustomerID: int) -> int: + return CustomerID % 1000 +CustomerData = [None for i in range(0, 1000)] +def AddRecord(Customer: CustomerRecord): + offset = 0 + while CustomerData[Hash(Customer.CustomerID) + offset] != None: + offset += 1 + CustomerData[Hash(Customer.CustomerID) + offset] = Customer +def FindRecord(customer_id: int) -> CustomerRecord: + starting = Hash(customer_id) + offset = 0 + while CustomerData[starting + offset].CustomerID != customer_id: + offset += 1 + return CustomerData[starting + offset] +def StoreRecords(filename = DATA_FILE): + with open(filename, 'wb') as file: + for customer in CustomerData: + pickle.dump(customer, file) + file.close() +for i in range(20): + AddRecord(CustomerRecord()) +for i in range(len(CustomerData)): + if CustomerData[i] != None: + print(f"[{i}] {CustomerData[i]} {'-> Collision!' if Hash(CustomerData[i].CustomerID) != i else ''}")
\ No newline at end of file |