#!/usr/bin/env ruby require 'digest' def part1(input) find_md5 input end def part2(input) find_md5 input, 6 end def find_md5(input, leading_zeros = 5) (1..).detect do |i| Digest::MD5.hexdigest(input + i.to_s).start_with?('0' * leading_zeros) end end input = 'yzbqklnj' puts "=== Part 1 ===" puts part1(input) puts "=== Part 2 ===" puts part2(input)