Sha256: f7915f214ad1ae4b34b19fcbdf34445a5b2dec1c8da664c3cec45074bff9e6b0

Contents?: true

Size: 541 Bytes

Versions: 196

Compression:

Stored size: 541 Bytes

Contents

defmodule RunLengthEncoder do

  @spec encode(String.t) :: String.t
  def encode(string) do
    Regex.scan(~r/([a-zA-Z\s])\1*/, string)
    |> Enum.map_join(fn([run, c]) ->
      times = String.length(run)
      number = if times == 1 do "" else times end
        "#{number}#{c}"
    end)
  end

  @spec decode(String.t) :: String.t
  def decode(string) do
    Regex.scan(~r/(\d*)(.)/, string)
    |> Enum.map_join(fn [_,n,c] ->
      times = if n == "" do 1 else String.to_integer(n) end
      String.duplicate(c, times)
    end)
  end
end

Version data entries

196 entries across 196 versions & 1 rubygems

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