RosettaCodeData/Task/Parallel-brute-force/Crystal/parallel-brute-force.cr
2026-04-30 12:34:36 -04:00

28 lines
651 B
Crystal

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