# Greedy Approach with Array#product # # $ time ruby a.rb # Found it! Your raffle number is f8ryt # real 2m12.019s # user 2m7.764s # sys 0m3.383s require 'digest' def generate_hash(id, raffle_number) Digest::MD5.base64digest(id+ raffle_number) end def mine_raffle_number(id, digest) alphabet = %w(a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9) alphabet.product(alphabet, alphabet, alphabet, alphabet).each do |raffle_candidate| raffle_candidate = raffle_candidate.join("") if generate_hash(id, raffle_candidate) == digest puts "Found it! Your raffle number is #{raffle_candidate}" return end end puts "not found" end id = "https://www.crowdcast.io/seanhandley256" digest = "VMAZY9CRQYA9JnFCbXETjg==" mine_raffle_number(id, digest)