Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
30
Task/Middle-three-digits/Elixir/middle-three-digits.elixir
Normal file
30
Task/Middle-three-digits/Elixir/middle-three-digits.elixir
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
defmodule Middle do
|
||||
def three(num) do
|
||||
n = num |> abs |> to_string
|
||||
|
||||
case {n,String.length(n) > 2,even?(n)} do
|
||||
{n, true, false} ->
|
||||
cut(n)
|
||||
{_, false, _} ->
|
||||
raise "Number must have at least three digits"
|
||||
{_, _, true} ->
|
||||
raise "Number must have an odd number of digits"
|
||||
end
|
||||
end
|
||||
|
||||
defp even?(n), do: rem(String.length(n),2) == 0
|
||||
defp cut(n), do: String.slice(n,(div(String.length(n),2) - 1),3)
|
||||
end
|
||||
|
||||
valids = [123, 12345, 1234567, 987654321, 10001, -10001, -123, -100, 100, -12345]
|
||||
Enum.each(valids, fn n -> :io.format "~10w : ~s~n", [n, Middle.three(n)] end)
|
||||
|
||||
errors = [1, 2, -1, -10, 2002, -2002, 0]
|
||||
Enum.each(errors, fn n ->
|
||||
:io.format "~10w : ", [n]
|
||||
try do
|
||||
IO.puts Middle.three(n)
|
||||
rescue
|
||||
e -> IO.puts e.message
|
||||
end
|
||||
end)
|
||||
Loading…
Add table
Add a link
Reference in a new issue