2015-12-04 - The Ideal Stocking Stuffer
(original .ipynb)
Puzzle input is a seven-character string. Part one requires us to find the lowest number n where the md5 hash of the input concatenated with n starts with five "0"s. Part two is the same but for six "0"s.
import hashlib
puzzle_input_str = open("./puzzle_input/day4.txt").read()
def adventcoin_hash(input_str_encoded, n):
return hashlib.md5(input_str_encoded + str(n).encode())
def part_one(input_str, leading_zeroes=5):
encoded = input_str.encode()
n = 0
target = leading_zeroes * "0"
while True:
result = adventcoin_hash(encoded, n)
if result.hexdigest()[:leading_zeroes] == target:
return n
n += 1
return -1
if False:
assert 609043 == part_one("abcdef")
assert 1048970 == part_one("pqrstuv")
print("part one:", part_one(puzzle_input_str))
part one: 282749
def part_two(input_str):
return part_one(input_str, 6)
print("part two:", part_two(puzzle_input_str))
part two: 9962624