2
這是一個相當非正統的方式來做經典的FizzBuzz exercise,但它只是爲了說明問題(嘿,如果你想要十億美元,它可能會很快)。如何推進多個統計員,或者「但是FizzBuzzBoozz呢?」
fizzer = (Array.new(2, '') << 'Fizz').cycle
buzzer = (Array.new(4, '') << 'Buzz').cycle
(1..100).each do |number|
fizzbuzz = fizzer.next + buzzer.next # this line is giving me problems.
puts (fizzbuzz.empty? ? number : fizzbuzz)
end
如何概括這個代碼接受像{3 => '嘶嘶聲',5 => '巴茲',7 => 'Boozz'}的散列?
阿。 .map.inject,我無法弄清楚。 Sideline,爲什麼#map需要一個&符號並且#inject可以不用? – steenslag 2010-11-12 23:54:41
@steenslag:'inject'是專門編寫的,所以它可以採用塊或符號參數。 'map'只能佔用一個塊,所以你需要'&'將這個符號轉換成一個塊(通過'Symbol#to_proc')。爲什麼'inject'是寫的,所以它可以帶一個符號,'map'不是,我不知道,但是我懷疑它和之前被認爲特別慢的'inject'有關,而使用符號代替的塊顯着加速。 – sepp2k 2010-11-13 13:18:56