sketch | 13:24
#!ruby cnt = 0 for i in 1..1000 until i / 10 == 0 cnt += 1 if ((i % 10) == 0) i = i / 10 end end print cnt
コメント欄で紹介されてる、injectを使う方法。injectって何だっけ…
(0..1000).inject(0){|c,i|c+i.to_s.count('0')}
cにブロック内の結果を入れていく。(0)は初期値。
krystal 2008/11/12 16:31 私はここの解説を参考にしました。http://www.ruby-lang.org/ja/man/html/Enumerable.html#inject
altr 2008/11/12 17:07 どもです。って、ありゃ、0から1000だったら、上の例は失敗しますね(順番に10で割ってるけど、0のときはカウントされない)…。すいません。「1の出現数」「2の出現数」みたいな応用もきかないし、素直に文字列として処理(injectの例みたいに)したほうがいいと思います。print (0..1000).map{|i|i.to_s}.join.count('0');とかでも。
ちょっとしたコメント
http://www.ruby-lang.org/ja/man/html/Enumerable.html#inject
って、ありゃ、0から1000だったら、上の例は失敗しますね(順番に10で割ってるけど、0のときはカウントされない)…。すいません。
「1の出現数」「2の出現数」みたいな応用もきかないし、素直に文字列として処理(injectの例みたいに)したほうがいいと思います。
print (0..1000).map{|i|i.to_s}.join.count('0');
とかでも。