30 lines
686 B
Elixir
30 lines
686 B
Elixir
defmodule FizzBuzz do
|
|
def count(number) do
|
|
1..number
|
|
|> Enum.to_list
|
|
|> Enum.map(&FizzBuzz.check/1)
|
|
end
|
|
|
|
def check(number) when number > 0 do
|
|
cond do
|
|
rem(number, 5) == 0 and rem(number, 3) == 0 ->
|
|
"Fizzbuzz!"
|
|
rem(number, 5) == 0 ->
|
|
"Buzz!"
|
|
rem(number, 3) == 0 ->
|
|
"Fizz!"
|
|
true ->
|
|
number
|
|
end
|
|
end
|
|
end
|
|
|
|
defmodule ElixirFizzbuzz do
|
|
def upto(n) when n > 0, do: 1..n |> Enum.map(&fizzbuzz/1)
|
|
|
|
def fizzbuzz(n) when rem(n, 3) == 0 and rem(n, 5) == 0, do: "Fizzbuzz!"
|
|
def fizzbuzz(n) when rem(n, 3) == 0, do: "Fizz"
|
|
def fizzbuzz(n) when rem(n, 5) == 0, do: "Buzz"
|
|
def fizzbuzz(n) when n > 0, do: n
|
|
end
|