diff --git a/solutions/elixir/series/3/lib/string_series.ex b/solutions/elixir/series/3/lib/string_series.ex new file mode 100644 index 0000000..681819b --- /dev/null +++ b/solutions/elixir/series/3/lib/string_series.ex @@ -0,0 +1,19 @@ +defmodule StringSeries do + @doc """ + Given a string `s` and a positive integer `size`, return all substrings + of that size. If `size` is greater than the length of `s`, or less than 1, + return an empty list. + """ + @spec slices(s :: String.t(), size :: integer) :: list(String.t()) + def slices(_, size) when size < 1, do: [] + def slices(s, size) do + length = String.length(s) + if size > length do + [] + else + for position <- Range.new(0, length - size) do + String.slice(s, position, size) + end + end + end +end