Ruby 練習問題集 ループ処理 (1)

ループ処理 (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 があると気付きました。