FizzBuzz question

Uma das perguntas mais comuns do burburinho Ă© esta:

Escreva um programa que imprima os nĂșmeros de 1 a 100.
Mas para mĂșltiplos de trĂȘs imprima “Fizz” em vez do
nĂșmero e para os mĂșltiplos de cinco imprima “Buzz”. Para
nĂșmeros mĂșltiplos de trĂȘs e cinco,
imprima “FizzBuzz”.

Eu escrevi isso em rubi.
No inĂ­cio meu objetivo era apenas fazer funcionar e foi isso que consegui.

range = 1..100
range
.each do |x|

if x % 3 == 0 && x % 5 == 0
puts
"FizzBuzz"
elsif x % 3 == 0
puts
"Fizz"
elsif x % 5 == 0
puts
"Buzz"
else
puts x

end

fim

Isso funcionou e minha prĂłxima etapa foi refatorĂĄ-lo. Usei o que aprendi recentemente no curso de Ruby na Codecademy e foi isso que descobri.

(1..100).each{ |x|
y
= ""
y
+= '"Fizz" if x % 3 == 0
y += ''Buzz" if x % 5 == 0

puts ( y.empty? ? x : y )

}

Quando x for um mĂșltiplo de 3, ele adicionarĂĄ a palavra “fizz” a y
quando x for um mĂșltiplo de 5, ele adicionarĂĄ a palavra “buzz” a y
quando for um mĂșltiplo de ambos, ele adicionarĂĄ a palavra fizz e buzz a y.
Usei a operadora ternĂĄria para mostrar o nĂșmero, se nĂŁo for fizz, buzz ou fizzbuzz.
Essa Ășltima linha basicamente diz que se y estiver vazio entĂŁo Ă© verdadeiro e x serĂĄ exibido. Se nĂŁo estiver vazio (fizzbuzz dentro), Ă© falso e y serĂĄ exibido.

puts (y.empty?? true: false);

Espero que ajude alguém