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