Define Extras module
I'll use as the host for utility functions needed to extend the stdlib.
This commit is contained in:
parent
6ff814a6d3
commit
6af5e4b82e
2 changed files with 36 additions and 0 deletions
18
assessments/semiprimes/server/lib/extras.ex
Normal file
18
assessments/semiprimes/server/lib/extras.ex
Normal file
|
@ -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
|
18
assessments/semiprimes/server/test/extras_test.exs
Normal file
18
assessments/semiprimes/server/test/extras_test.exs
Normal file
|
@ -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
|
Loading…
Reference in a new issue