ループ処理 (1) - Ruby 練習問題集 - Ruby on Rails with OIAX
ループ処理 (1)
1 以上の整数 n を引数として取り、1 から n までを画面に表示するメソッド foo を作りなさい。
ただし、以下の条件を満たすこと。
5個ずつ改行する。
数字と数字の間にはコンマを置く。
行末にはコンマを置かない。
まぁやってみた
def foo(n) 1.upto(n) do |i| print i if i % 5 == 0 print "\n" else print "," unless i==n end end end foo(16) 1,2,3,4,5 6,7,8,9,10 11,12,13,14,15 16=> 1
配列を5個ずつ区切って、joinで出力っていうのはどうだろう
と書いてみたら
※2009/12/12 foo1行目を変更。
意図せずmapになってたのでto_aへ。
def foo(n) a=(1..n).to_a d,m=n.divmod(5) d += 1 if m > 0 #5の倍数以外であればループカウンタをインクリメント 1.upto(d){|i| puts a[(i-1)*5, 5].join(",")} end foo(16) 1,2,3,4,5 6,7,8,9,10 11,12,13,14,15 16 => 1
汚ない。。
これはないな。
2010/02/15追記
余談ですが
railsならin_groups_of があると気付きました。