yuuki blog

プログラミング をアプトプットしています。

Ruby 二次元配列の最大値と最小値を求める

下記のようなテーブルがあります。

a b c d ...
1日目 12 25 46 10 20
2日目 27 93 17 39 26
3日目 63 72 53 7 92
4日目 32 54 37 98 6

各カラムの最大値と最小値を求めます。

  • テーブルは配列で入力します。(例)12 25 46 10 20
num = []
max_array = []
low_array = []
max = 0
i = 0
t = 0
puts "何回調べますか?"
n = gets.to_i
puts "何日間調べますか?"
m = gets.to_i
puts "一日ごとに入力してください"
int = n.times.map{gets.chomp.split.map(&:to_i)}
(m - 1).times do
  n.times do
    num << int[i][t]
    max = num.sort
    i += 1
  end
  max_array << max[n-1]
  low_array << max[0]
  num = []
  i = 0
  t += 1
end
puts "何回目を調べますか?"
d = gets.to_i
puts "最小値は#{low_array[d -1]}です"
puts "最大値は#{max_array[d - 1]}です"
  • timesメソッドをネストすることによって、intの二次元配列を1次元配列に変換し、ソートをしてから配列の最大値と最小値を取り出し、最大値の配列と最小値の配列に入れています。
    最後に指定のカラムを出力します。