summaryrefslogtreecommitdiff
path: root/Assignment5/2a.py
diff options
context:
space:
mode:
Diffstat (limited to 'Assignment5/2a.py')
-rw-r--r--Assignment5/2a.py14
1 files changed, 14 insertions, 0 deletions
diff --git a/Assignment5/2a.py b/Assignment5/2a.py
new file mode 100644
index 0000000..0b55cee
--- /dev/null
+++ b/Assignment5/2a.py
@@ -0,0 +1,14 @@
+import random, hashlib, collections
+
+def duplicates(table):
+ return [key for key, values in table.items() if len(values) > 1]
+
+def hash(msg): # we use only the first 3 bytes, as a toy example
+ return hashlib.md5(str(msg).encode('utf-8')).digest()[:3]
+
+lookup = collections.defaultdict(list) # lookup table
+while duplicates(lookup) == []: # as long as there are no duplicates
+ input = random.getrandbits(64) # 64 bits is sufficient to assume no input occurs twice
+ lookup[hash(input)].append(input)
+
+print(len(lookup)) \ No newline at end of file