require "digest" input = STDIN.read.chomp salt = 0 password = [] loop do digest = Digest::MD5.hexdigest("#{input}#{salt}") if digest[0...5] == "00000" password << digest[5] puts password.join("") break if password.length >= 8 end salt += 1 end part_1 = password.join("") puts "Part 1: #{part_1}" salt = 0 to_solve = 8 password = "--------" loop do digest = Digest::MD5.hexdigest("#{input}#{salt}") if digest[0...5] == "00000" if digest[5].to_i.to_s == digest[5] && digest[5].to_i < 8 && password[digest[5].to_i] == "-" password[digest[5].to_i] = digest[6] to_solve -= 1 puts password end break if to_solve <= 0 end salt += 1 end part_2 = password puts "Part 2: #{part_2}"