Data update
This commit is contained in:
parent
29a5eea0d4
commit
5c1bb7bfa9
2011 changed files with 35081 additions and 3229 deletions
47
Task/Parallel-brute-force/Elixir/parallel-brute-force.elixir
Normal file
47
Task/Parallel-brute-force/Elixir/parallel-brute-force.elixir
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
defmodule RosettacodeBruteForce do
|
||||
require Logger
|
||||
|
||||
@spec start() :: :ok
|
||||
def start() do
|
||||
children = [
|
||||
{Task.Supervisor, name: Bf.TaskSupervisor}
|
||||
]
|
||||
Supervisor.start_link(children, strategy: :one_for_one)
|
||||
start_bf("1115dd800feaacefdf481f1f9070374a2a81e27880f187396db67958b207cbad")
|
||||
start_bf("3a7bd3e2360a3d29eea436fcfb7e44c735d117c42d1c1835420b6b9942dd4f1b")
|
||||
start_bf("74e1bb62f8dabb8125a58852b63bdf6eaef667cb56ac7f7cdba6d7305c50a22f")
|
||||
:ok
|
||||
end
|
||||
|
||||
@spec start_bf(String.t()) :: :ok
|
||||
def start_bf(target) do
|
||||
Enum.each(0..25, fn a ->
|
||||
Enum.each(0..25, fn b ->
|
||||
Task.Supervisor.async(Bf.TaskSupervisor, fn ->
|
||||
solve_bf(a, b, target)
|
||||
end)
|
||||
end)
|
||||
end)
|
||||
:ok
|
||||
end
|
||||
|
||||
defp solve_bf(a, b, target) do
|
||||
Enum.each(0..25, fn x ->
|
||||
Enum.each(0..25, fn y ->
|
||||
Enum.each(0..25, fn z ->
|
||||
candidate = List.to_string([?a + a, ?a + b, ?a + x, ?a + y, ?a + z])
|
||||
if (check_hash?(candidate, target)) do
|
||||
Logger.info("SOLVED: #{candidate} = #{target}")
|
||||
end
|
||||
end)
|
||||
end)
|
||||
end)
|
||||
:ok
|
||||
end
|
||||
|
||||
defp check_hash?(candidate, target) do
|
||||
target == :crypto.hash(:sha256, candidate)
|
||||
|> Base.encode16()
|
||||
|> String.downcase()
|
||||
end
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue