Sha256: 315ef7116ad6a49e545a6d8cd70e5c7db4848261339e02c7595573359cf6b2de
Contents?: true
Size: 638 Bytes
Versions: 69
Compression:
Stored size: 638 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
69 entries across 69 versions & 1 rubygems