diff options
Diffstat (limited to '04')
-rwxr-xr-x | 04/main.py | 33 | ||||
-rwxr-xr-x | 04/test.py | 21 |
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() |