Ruby

ハッシュの値の合計・平均・最大値を求める

営業担当者の名前がキーで売上(整数)が値になったハッシュ(sales)を使って、全員の売上合計と平均、さらに売上が最大の担当者の名前を表示するプログラムです。

sum.rb
sales = {itou: 100,satou: 200,katou: 300,takahashi: 40}

sum = 0
sales.each { |k,v| sum += v }
avg = sum / sales.length

puts "Sum: #{sum}"
puts "Avg: #{avg}"

max_k = "",max_v = 0
sales.each do |k,v|
  if v >= max_v then
    max_v = v
    max_k = k
  end
end

puts "Max: #{max_k}"

以下は実行例です。salesの内容を変更しても正しい算定結果が得られる事を確認してみて下さい。

$ ruby sum.rb
Sum: 640
Avg: 160
Max: katou

今回のプログラムでは一位が二人以上いる場合、つまり最大値が複数存在するケースを想定できていません。これに対応する場合、どうしたらよいか検討してみて下さい。

参考URL