summaryrefslogtreecommitdiff
path: root/notebooks/esq_ch_26.py
diff options
context:
space:
mode:
authorZhongheng Liu <z.liu@outlook.com.gr>2025-03-11 15:25:56 +0200
committerZhongheng Liu <z.liu@outlook.com.gr>2025-03-11 15:25:56 +0200
commit0e6d874c4abb734a915f719f0a507724c7a754fa (patch)
tree03c1d24cba09bc2d1216f45e930c2d877e269a7b /notebooks/esq_ch_26.py
parent9568147aefac22f8928460220560c62bbd972c99 (diff)
downloadcs-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.py36
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