FizzBuzz em Elixir

Exercício: Funções-2:

Escreva uma função que receba três argumentos. Se os dois primeiros forem zero, retorne “FizzBuzz”. Se o primeiro for zero, retorna “Fizz”. Se o segundo for zero, retorne “Buzz”. Caso contrário, retorne o terceiro argumento. Não use nenhum recurso de linguagem que ainda não tenhamos abordado neste livro.

Exercício: Funções-3:

O operador rem (a, b) retorna o resto após dividir a por b. Escreva uma função que recebe um único inteiro (n) chama a função do exercício anterior, passando rem (n, 3), rem (n, 5) e n. Chame 7 vezes com os argumentos 10, 11, 12, etc. Você deve obter “Buzz, 11, Fizz, 13, 14, FizzBuzz”, 16 ”.


fizz_buzz = function do
(0, 0, _) -> "FizzBuzz"
(0, _, _) -> "Fizz"
(_, 0, _) -> "Buzz"
(_, _, x) -> x
end

check_fizz_buzz
= function do
(n) -> fizz_buzz.(rem(n,3), rem(n,5),n)
end

Enum.each([10,11,12,13,14,15,16], fn(n) ->
IO
.puts "FizzBuzz(#{n}):: #{check_fizz_buzz.(n)}"
end)

resultado:

FizzBuzz(10):: Buzz
FizzBuzz(11):: 11
FizzBuzz(12):: Fizz
FizzBuzz(13):: 13
FizzBuzz(14):: 14
FizzBuzz(15):: FizzBuzz
FizzBuzz(16):: 16

Desafio do Elixir de programação