Sha256: 2a74f5e6e5dc54e5d103bbe3814dbdf665c65c60c6fd2f1c623c85714cacd749

Contents?: true

Size: 466 Bytes

Versions: 327

Compression:

Stored size: 466 Bytes

Contents

defmodule Binary do
  def to_decimal(string) do
    if !String.match?(string, ~r{[^10]}) do
      string |> bits |> Enum.reverse |> Enum.with_index |> sum
    else
      0
    end
  end

  defp bits(string), do: Enum.map(Regex.scan(~r{[10]}, string), &(&1 == ["1"]))

  defp sum(bits), do: Enum.reduce(bits, 0, fn(bit, acc) -> acc + power_of_two(bit) end)

  defp power_of_two({false, _}), do: 0
  defp power_of_two({true, exponent}), do: :math.pow(2, exponent)
end

Version data entries

327 entries across 327 versions & 1 rubygems

Version Path
trackler-2.2.1.109 tracks/elixir/exercises/binary/example.exs
trackler-2.2.1.108 tracks/elixir/exercises/binary/example.exs
trackler-2.2.1.107 tracks/elixir/exercises/binary/example.exs
trackler-2.2.1.106 tracks/elixir/exercises/binary/example.exs
trackler-2.2.1.105 tracks/elixir/exercises/binary/example.exs
trackler-2.2.1.104 tracks/elixir/exercises/binary/example.exs
trackler-2.2.1.103 tracks/elixir/exercises/binary/example.exs
trackler-2.2.1.102 tracks/elixir/exercises/binary/example.exs
trackler-2.2.1.101 tracks/elixir/exercises/binary/example.exs
trackler-2.2.1.100 tracks/elixir/exercises/binary/example.exs
trackler-2.2.1.99 tracks/elixir/exercises/binary/example.exs
trackler-2.2.1.98 tracks/elixir/exercises/binary/example.exs
trackler-2.2.1.97 tracks/elixir/exercises/binary/example.exs
trackler-2.2.1.96 tracks/elixir/exercises/binary/example.exs
trackler-2.2.1.95 tracks/elixir/exercises/binary/example.exs
trackler-2.2.1.94 tracks/elixir/exercises/binary/example.exs
trackler-2.2.1.93 tracks/elixir/exercises/binary/example.exs
trackler-2.2.1.92 tracks/elixir/exercises/binary/example.exs
trackler-2.2.1.91 tracks/elixir/exercises/binary/example.exs
trackler-2.2.1.90 tracks/elixir/exercises/binary/example.exs