いま、arrという配列に
[5,6,7,7,8,9,9,10,11]
という数字が入っています。
これを
5 6 7
7 8 9
9 10 11
という形で出力するにはどうしたらいいのでしょうか
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
0
もしかして、「同じ値が続いていたらそこで分ける」ですか?
arr.inject([[]]){|ary,v| ary.last.last == v ? ary<<[v] : ary.last << v ary }
投稿2020/05/03 14:04
総合スコア23569
0
each_slice を使わずに書いてみました。
x.rb
ruby
1def divide_array(ary, len) 2 (0...(ary.size + len - 1) / len).map { |x| (len * x..len * x + len - 1) }.map { |range| ary[range] } 3end 4 5ary = [5, 6, 7, 7, 8, 9, 9, 10, 11] 6pp divide_array(ary, 3) 7 8ary = [1, 2, 3, 4, 5, 6, 7, 8, 9] 9pp divide_array(ary, 3) 10 11ary = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 12pp divide_array(ary, 3) 13 14ary = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] 15pp divide_array(ary, 3) 16 17ary = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] 18pp divide_array(ary, 3)
投稿2020/05/03 11:56
編集2020/05/03 11:58総合スコア22324
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
3つずつに分割すると言うことなら、each_slice
を使います。
Ruby
1a = [5,6,7,7,8,9,9,10,11] 2b = each_slice(3).to_a 3p b #=> [[5, 6, 7], [7, 8, 9], [9, 10, 11]]
もしかして、表示だけの話ですかね?そうだとすると、
Ruby
1a = [5,6,7,7,8,9,9,10,11] 2puts a.each_slice(3).map{|x| x.join(" ")}
だらだら書くと、
Ruby
1a = [5,6,7,7,8,9,9,10,11] 2a.each_with_index do |x,i| 3 if i%3 == 2 4 puts x 5 else 6 print x," " 7 end 8end
投稿2020/05/03 07:12
総合スコア85949
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
Rubyは初心者ですが、
Ruby
1array.each_slice(3).to_a
で、できるようです。
ある配列を任意の長さ n ずつ分解したいです。
例えば、
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] を
[[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10]] にしたいということです。
簡単にできるんです。そう Enumerable#each_slice ならね。```
array = (0..10).to_a
=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
array.each_slice(3).to_a
=> [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10]]
投稿2020/05/03 07:05
総合スコア222
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。