From 0849f11b880c8f14e951685d7eee4f8444e112ab Mon Sep 17 00:00:00 2001 From: "exercism-solutions-syncer[bot]" <211797793+exercism-solutions-syncer[bot]@users.noreply.github.com> Date: Thu, 7 Aug 2025 07:48:30 +0000 Subject: [PATCH] [Sync Iteration] elixir/series/2 --- solutions/elixir/series/2/lib/string_series.ex | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 solutions/elixir/series/2/lib/string_series.ex diff --git a/solutions/elixir/series/2/lib/string_series.ex b/solutions/elixir/series/2/lib/string_series.ex new file mode 100644 index 0000000..197d4c6 --- /dev/null +++ b/solutions/elixir/series/2/lib/string_series.ex @@ -0,0 +1,14 @@ +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: slice(s, size, String.length(s) - size) + + defp slice(s, size, position, list \\ []) + defp slice(_, _, position, list) when position < 0, do: list + defp slice(s, size, position, list), do: slice(s, size, position - 1, [String.slice(s, position, size) | list]) +end