0〜1000に含まれる0をカウントする
練習 - krystal: プログラミング超初心者(文系) - Rubyist
ざっと思い付いたのはこんなの。Ruby 1.8.7以降。
「&:to_s」は Symbol#to_proc で {|i| i.to_s } というブロックを渡したのと同じ。
String#succで文字列で表現された数字を加算できる。
Array.new(N) は N 要素の配列を作成し、ブロックを渡すとインデックスをブロックパラメータに取る。
(0..1000).map(&:to_s).join.count('0') # => 193 ("0".."1000").to_a.join.count('0') # => 193 ("0".."1000").inject(0){|s,x|s+x.count('0')} # => 193 Array.new(1001){|i|i.to_s}.join.count('0') # => 193 Array.new(1001,&:to_s).join.count('0') # => 193