Skip to content

Latest commit

 

History

History
182 lines (156 loc) · 1.98 KB

000-fizzbuzz.livemd

File metadata and controls

182 lines (156 loc) · 1.98 KB

0 - Fizzbuzz

EL FAMOSO "FIZZ BUZZ"

Enunciado

Escribe un programa que muestre por consola (con un print) los números de 1 a 100 (ambos incluidos y con un salto de línea entre cada impresión), sustituyendo los siguientes:

  • Múltiplos de 3 por la palabra "fizz".
  • Múltiplos de 5 por la palabra "buzz".
  • Múltiplos de 3 y de 5 a la vez por la palabra "fizzbuzz".
  • El número si no es divisible por ninguno.

Solución

defmodule Solution do
  @fizz "fizz"
  @fizzdiv 3

  @buzz "buzz"
  @buzzdiv 5

  def fizzbuzz(number) when rem(number, @fizzdiv) == 0 and rem(number, @buzzdiv) == 0 do
    "#{@fizz}#{@buzz}"
  end

  def fizzbuzz(number) when rem(number, @fizzdiv) == 0 do
    @fizz
  end

  def fizzbuzz(number) when rem(number, @buzzdiv) == 0 do
    @buzz
  end

  def fizzbuzz(number) do
    number
  end

  def run(numbers) do
    numbers
    |> Enum.each(fn number ->
      fizzbuzz(number)
      |> IO.inspect()
    end)
  end
end
{:module, Solution, <<70, 79, 82, 49, 0, 0, 8, ...>>, {:run, 1}}
Solution.run(1..100)
1
2
"fizz"
4
"buzz"
"fizz"
7
8
"fizz"
"buzz"
11
"fizz"
13
14
"fizzbuzz"
16
17
"fizz"
19
"buzz"
"fizz"
22
23
"fizz"
"buzz"
26
"fizz"
28
29
"fizzbuzz"
31
32
"fizz"
34
"buzz"
"fizz"
37
38
"fizz"
"buzz"
41
"fizz"
43
44
"fizzbuzz"
46
47
"fizz"
49
"buzz"
"fizz"
52
53
"fizz"
"buzz"
56
"fizz"
58
59
"fizzbuzz"
61
62
"fizz"
64
"buzz"
"fizz"
67
68
"fizz"
"buzz"
71
"fizz"
73
74
"fizzbuzz"
76
77
"fizz"
79
"buzz"
"fizz"
82
83
"fizz"
"buzz"
86
"fizz"
88
89
"fizzbuzz"
91
92
"fizz"
94
"buzz"
"fizz"
97
98
"fizz"
"buzz"
:ok