require "digest/sha256" require "wait_group" hashes = Set{"1115dd800feaacefdf481f1f9070374a2a81e27880f187396db67958b207cbad", "3a7bd3e2360a3d29eea436fcfb7e44c735d117c42d1c1835420b6b9942dd4f1b", "74e1bb62f8dabb8125a58852b63bdf6eaef667cb56ac7f7cdba6d7305c50a22f"} mutex = Mutex.new wg = WaitGroup.new ('a'..'z').each do |initial| wg.add spawn do pwd = initial + "aaaa" while pwd[0] == initial hash = Digest::SHA256.hexdigest pwd if hash.in? hashes mutex.synchronize do puts "#{pwd}: #{hash}" end end pwd = pwd.succ end ensure wg.done end end wg.wait