Created
January 16, 2016 08:43
-
-
Save heri16/49a2d9eb9bed9e929b7e to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
defmodule Fizzbuzz do | |
def fizzbuzz_case(num) do | |
case num do | |
num when rem(num, 15) == 0 -> "FizzBuzz" | |
num when rem(num, 5) == 0 -> "Buzz" | |
num when rem(num, 3) == 0 -> "Fizz" | |
num -> num | |
end | |
end | |
def print(to) do | |
1..to | |
|> Enum.into([]) | |
|> Enum.map(&fizzbuzz/1) | |
|> Enum.join("\n") | |
|> IO.puts | |
end | |
# Follow Elixir convention | |
def fizzbuzz(num) when rem(num, 5) == 0 and rem(num, 3) == 0 do | |
"Fizzbuzz" | |
end | |
def fizzbuzz(num) when rem(num, 3) == 0 do | |
"Fizz" | |
end | |
def fizzbuzz(num) when rem(num, 5) == 0 do | |
"Buzz" | |
end | |
def fizzbuzz(num) do | |
num | |
end | |
# Recursive version | |
def print_recursive(to) when to > 0 do | |
fizzbuzz_recursive(to,[]) | |
|> Enum.join("\n") | |
|> IO.puts | |
end | |
def fizzbuzz_recursive(_num = 0, acc) do | |
acc | |
end | |
def fizzbuzz_recursive(num, acc) when rem(num, 5) == 0 and rem(num, 3) == 0 do | |
acc = ["Fizzbuzz" | acc] | |
fizzbuzz_recursive(num-1, acc) | |
end | |
def fizzbuzz_recursive(num, acc) when rem(num, 3) == 0 do | |
acc = ["Fizz" | acc] | |
fizzbuzz_recursive(num-1, acc) | |
end | |
def fizzbuzz_recursive(num, acc) when rem(num, 5) == 0 do | |
acc = ["Buzz" | acc] | |
fizzbuzz_recursive(num-1, acc) | |
end | |
def fizzbuzz_recursive(num, acc) do | |
acc = [ num | acc ] | |
fizzbuzz_recursive(num-1, acc) | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment