ruby negative indices fizz buzz

def negative_fizz_buzz(n)
  result = []

  n.downto(1) do |i|
    case
    when i % 3 == 0 && i % 5 == 0
      result << 'FizzBuzz'
    when i % 3 == 0
      result << 'Fizz'
    when i % 5 == 0
      result << 'Buzz'
    else
      result << i
    end
  end

  result.reverse
end

# Example usage:
# Output: ["FizzBuzz", 98, "Fizz", "Buzz", "Fizz", 97, "Fizz", "Buzz", "Fizz", 94, "FizzBuzz", 92, "Fizz", "Buzz", "Fizz", 89, "Fizz", "Buzz", "Fizz", 86, "FizzBuzz", "Fizz", 83, "Fizz", "Buzz", "Fizz", 80, "Fizz", "Buzz", "Fizz", 77, "FizzBuzz", "Fizz", "Buzz", "Fizz", 74, "Fizz", "Buzz", "Fizz", 71, "FizzBuzz", 68, "Fizz", "Buzz", "Fizz", 65, "Fizz", "Buzz", "Fizz", 62, "FizzBuzz", "Fizz", 59, "Fizz", "Buzz", "Fizz", 56, "Fizz", "Buzz", "Fizz", 53, "FizzBuzz", "Fizz", "Buzz", "Fizz", 50, "Fizz", "Buzz", "Fizz", 47, "FizzBuzz", "Fizz", 44, "Fizz", "Buzz", "Fizz", 41, "Fizz", "Buzz", "Fizz", 38, "FizzBuzz", "Fizz", 35, "Fizz", "Buzz", "Fizz", 32, "Fizz", "Buzz", "Fizz", 29, "FizzBuzz", "Fizz", 26, "Fizz", "Buzz", "Fizz", 23, "Fizz", "Buzz", "Fizz", 20, "FizzBuzz", "Fizz", 17, "Fizz", "Buzz", "Fizz", 14, "Fizz", "Buzz", "Fizz", 11, "FizzBuzz", "Fizz", 8, "Fizz", "Buzz", "Fizz", 5, "Fizz", "Buzz", "Fizz", 2, "FizzBuzz"]
puts negative_fizz_buzz(100)