func invert_sha256(hash) { var letters = @('a'..'z') var job = func (prefix, hash) { variations_with_repetition(letters, 4, {|*a| var s = join('', prefix, a...) return s if (s.sha256 == hash) }) return nil } letters.map {|prefix| job.ffork(prefix, hash) }.each {|f| with (f.wait) { return _ } } } var tests = %w( 1115dd800feaacefdf481f1f9070374a2a81e27880f187396db67958b207cbad 3a7bd3e2360a3d29eea436fcfb7e44c735d117c42d1c1835420b6b9942dd4f1b 74e1bb62f8dabb8125a58852b63bdf6eaef667cb56ac7f7cdba6d7305c50a22f ) tests.each {|t| var phrase = invert_sha256(t) say "#{t} : #{phrase}" }