使用`map`解决'FizzBu​​zz'问题

时间:2016-01-28 18:16:56

标签: ruby fizzbuzz

我厌倦了使用map来解决fizzbuzz。

def fizzbuzz(n)
    array =(1..n).to_a
    array.map{|x| 
        if x % 3 == 0 && x % 5 == 0
         x = 'FizzBuzz'
        elsif x % 3 == 0 
         x = 'Fizz'
        elsif x % 5 == 0
         x = 'Buzz'
        end
    } 
   array
end

不知何故,它不起作用。你知道什么是错的吗?

2 个答案:

答案 0 :(得分:4)

方法map不会更改原始数组。请改用爆炸版map!

答案 1 :(得分:1)

根据@tmc的建议使用map!以及其他一些更改尝试:

def fizzbuzz(n)
    array =(1..n).to_a

    array.map!{|x| 
        if x % 3 == 0 && x % 5 == 0
         x = 'FizzBuzz'
        elsif x % 3 == 0 
         x = 'Fizz'
        elsif x % 5 == 0
         x = 'Buzz'
        else
         x = x
        end
    }

   p array
end

fizzbuzz(10) #=> [1, 2, "Fizz", 4, "Buzz", "Fizz", 7, 8, "Fizz", "Buzz"]

正如您所看到的,我已添加了对fizzbuzz方法的调用,其参数为10,您可以更改。我已经使用p来检查数组以及最终的else语句。