1
0

More than 1 year has passed since last update.

【Ruby】1次元配列を2次元配列に変換する実装方法

Posted at

はじめに

多次元配列を1次元配列に変換するにはflattenメソッドを使用すればよいですが、その逆の1次元配列を多次元配列にするメソッドはないなと思い、実装してみました。
多次元配列と言いながら、今回は2次元配列に変換する方法になります。

実装

.rb
puts "カンマ区切りで複数の数値を入力してください"
input_array = gets.chomp.split(",")

puts "2次元配列の行と列のどちらを固定しますか?('行'or'列'を入力してください)"
select = gets.chomp

# 列が選択されたときの行と列の数を算出
if select == "列"
  puts "列数を入力してください"
  new_column = gets.chomp.to_i # 2次元配列の列数
  new_line = ((input_array.count)/new_column.to_f).ceil # 2次元配列の行数
end

# 行が選択されたときの行と列の数を算出
if select == "行"
  puts "行数を入力してください"
  new_line = gets.chomp.to_i # 2次元配列の行数
  new_column = ((input_array.count)/new_line.to_f).ceil # 2次元配列の列数
end

# 2次元配列に変換
i = 0
new_array = []
while i < new_line do
  new_array << input_array[(i*new_column)..(i*new_column + new_column - 1)] # 1次元配列から2次元配列の列数分の要素を取得して空配列に挿入
  i += 1
end

puts "入力した1次元配列"
p input_array

puts "変換された2次元配列"
p new_array

流れとしては、以下のようになります。

  1. 1次元配列を入力
  2. 行数と列数のどちらを固定するのかを選択
  3. 行と列、それぞれの場合における行と列の数を算出する
  4. 1次元配列から、2次元配列の列数分の要素を取得して、空の配列に挿入する
  5. 4の操作を行数分繰り返す

さいごに

あまりきれいではないかもしれませんが、思いどおりの操作をすることができました。
(そもそも本記事の目的を達成するようなメソッドが既に存在しておりましたら、コメントでご教授いただけると嬉しいです。)

1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0