Day 4 - Advent of Code 2015
Working solutions for the day 4 puzzles.
Part One
""" day_04_01.py """
# usage: python3 day_04_01.py < input
from hashlib import md5
key = input()
output = ''
i = 0
while output[:5] != '00000':
i += 1
value = md5()
value.update(bytes(key + str(i), 'utf-8'))
output = value.hexdigest()
print(i)
Part Two
""" day_04_02.py """
# usage: python3 day_04_02.py < input
from hashlib import md5
from multiprocessing import Pool
def md5sum(number, size):
""" does md5sum have size leading zeroes """
value = md5()
value.update(bytes(key + str(number), 'utf-8'))
return value.hexdigest()[:size] == '0' * size
def md5sum_6(number):
""" does md5sum have six leading zeroes """
return md5sum(number, 6)
key = input()
step = 1000000
i = 0
while True:
with Pool() as p:
result = list(p.map(md5sum_6, [i + j for j in range(step)]))
try:
index = result.index(True)
except ValueError:
i += step
else:
print(i + index)
break