Ruby 配列を後ろから指定した単位で分割する

Ruby 配列を後ろから指定した単位で分割する

Rubyで、配列を後ろから指定した単位で分割するソースコードを記述してます。「reverse」と「each_slice」と「collect」を使用することで可能です。

環境

  • OS windows11 home
  • ruby 3.1.3p185

配列を後ろから指定した単位で分割

配列を後ろから指定した単位で分割するには、「reverse.each_slice().collect(&:reverse)」を使用します。

配列.reverse.each_slice(分割単位).collect(&:reverse)

実際に使用してみます。

arr = [1, 2, 3, 4, 5]

p arr.reverse.each_slice(2).collect(&:reverse)
# [[4, 5], [2, 3], [1]]

p arr.reverse.each_slice(3).collect(&:reverse)
# [[3, 4, 5], [1, 2]]

p arr
# [1, 2, 3, 4, 5]

取得されていることが確認できます。

「1」を指定すると、1つずつ取得されます。

arr = [1, 2, 3, 4, 5]

p arr.reverse.each_slice(1).collect(&:reverse)
# [[5], [4], [3], [2], [1]]

p arr
# [1, 2, 3, 4, 5]

最大値を超えると、以下の結果となります。

arr = [1, 2, 3, 4, 5]

p arr.reverse.each_slice(6).collect(&:reverse)
# [[1, 2, 3, 4, 5]]

p arr
# [1, 2, 3, 4, 5]

0を指定

「0」を指定するとエラーが発生します。

arr = [1, 2, 3, 4, 5]

p arr.reverse.each_slice(0).collect(&:reverse)
# `each_slice': invalid slice size (ArgumentError)

空の配列

空の場合は、全て空が返ります。

arr = []

p arr.reverse.each_slice(1).collect(&:reverse)
# []

p arr.reverse.each_slice(2).collect(&:reverse)
# []

p arr
# []