diff options
author | William Carroll <wpcarro@gmail.com> | 2020-12-11T22·42+0000 |
---|---|---|
committer | William Carroll <wpcarro@gmail.com> | 2020-12-11T22·42+0000 |
commit | 6af5e4b82e9d2f025ad388f82495865a195c5218 (patch) | |
tree | 4af5a829b1d969570652889355d5046551177918 | |
parent | 6ff814a6d31126dbb61ae720c0eb4d0e7058bb00 (diff) |
Define Extras module
I'll use as the host for utility functions needed to extend the stdlib.
-rw-r--r-- | assessments/semiprimes/server/lib/extras.ex | 18 | ||||
-rw-r--r-- | assessments/semiprimes/server/test/extras_test.exs | 18 |
2 files changed, 36 insertions, 0 deletions
diff --git a/assessments/semiprimes/server/lib/extras.ex b/assessments/semiprimes/server/lib/extras.ex new file mode 100644 index 000000000000..4d2a938fcf58 --- /dev/null +++ b/assessments/semiprimes/server/lib/extras.ex @@ -0,0 +1,18 @@ +defmodule Extras do + @doc """ + Return an ascending range starting at `a` and ending at `b` (exclusive). + + ## Examples + + iex> Extras.range(2, 5) + [2, 3, 4] + + """ + def range(a, b) do + if b <= a do + [] + else + [a] ++ range(a + 1, b) + end + end +end diff --git a/assessments/semiprimes/server/test/extras_test.exs b/assessments/semiprimes/server/test/extras_test.exs new file mode 100644 index 000000000000..67d0b8875cae --- /dev/null +++ b/assessments/semiprimes/server/test/extras_test.exs @@ -0,0 +1,18 @@ +defmodule ExtrasTest do + use ExUnit.Case + doctest Extras + + describe "range" do + test "returns an empty list for descending sequences" do + assert Extras.range(0, -2) == [] + end + + test "returns an empty list for non-ascending sequences" do + assert Extras.range(8, 8) == [] + end + + test "returns an exclusive range" do + assert Extras.range(3, 6) == [3, 4, 5] + end + end +end |