summaryrefslogtreecommitdiff
path: root/04
diff options
context:
space:
mode:
Diffstat (limited to '04')
-rwxr-xr-x04/main.py33
-rwxr-xr-x04/test.py21
2 files changed, 54 insertions, 0 deletions
diff --git a/04/main.py b/04/main.py
new file mode 100755
index 0000000..1014062
--- /dev/null
+++ b/04/main.py
@@ -0,0 +1,33 @@
+#!/usr/bin/python
+
+from hashlib import md5
+
+
+
+def solve_partn(partn, key):
+ if partn == 1:
+ prefix = "00000"
+ else: # partn == 2
+ prefix = "000000"
+
+ n = 0
+ h = "undefined"
+ while not h.startswith(prefix):
+ n += 1
+ d = key + str(n)
+ h = md5(d.encode()).hexdigest()
+ return n
+
+
+
+def main():
+ # My personal input string
+ key = "ckczppom"
+
+ print("Part 1 solution:", solve_partn(1, key)) # 117946 for me
+ print("Part 2 solution:", solve_partn(2, key)) # 3938038 for me
+
+
+
+if __name__ == "__main__":
+ main()
diff --git a/04/test.py b/04/test.py
new file mode 100755
index 0000000..4078e83
--- /dev/null
+++ b/04/test.py
@@ -0,0 +1,21 @@
+#!/usr/bin/python
+
+import unittest
+
+import main
+
+
+
+class ExamplesPart1(unittest.TestCase):
+ def test_example1(self):
+ key = "abcdef"
+ self.assertEqual(main.solve_partn(1, key), 609043)
+
+ def test_example2(self):
+ key = "pqrstuv"
+ self.assertEqual(main.solve_partn(1, key), 1048970)
+
+
+
+if __name__ == "__main__":
+ unittest.main()