質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

5回答

650閲覧

【Ruby初学者の質問】配列の分割

ray_rio

総合スコア10

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

1クリップ

投稿2020/05/03 06:53

いま、arrという配列に
[5,6,7,7,8,9,9,10,11]
という数字が入っています。

これを

5 6 7
7 8 9
9 10 11

という形で出力するにはどうしたらいいのでしょうか

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

もしかして、「同じ値が続いていたらそこで分ける」ですか?
arr.inject([[]]){|ary,v| ary.last.last == v ? ary<<[v] : ary.last << v ary }

投稿2020/05/03 14:04

winterboum

総合スコア23401

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

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
katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ruby

1arr = [5,6,7,7,8,9,9,10,11] 2 3str = arr.each_with_index.inject("") do |prev, (num, index)| 4 prev + " " + num.to_s + (index % 3 == 2 ? "\n" : "") 5end 6 7puts str 8// 5 6 7 9// 7 8 9 10// 9 10 11

こんな感じでどうでしょう

投稿2020/05/03 07:19

kazchimo

総合スコア172

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

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

otn

総合スコア84798

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

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

glyzinieh

総合スコア217

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問