使用 `map` 解决 'FizzBuzz'
Using `map` to solve '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
不知何故,它不起作用。你知道怎么回事吗?
方法map
不改变原数组。请改用 bang 版本 map!
。
按照@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
语句。
我厌倦了使用 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
不知何故,它不起作用。你知道怎么回事吗?
方法map
不改变原数组。请改用 bang 版本 map!
。
按照@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
语句。