問題
以下のように、野菜の名前と重さが入った配列があります。この配列を用いて、野菜の名前とそれぞれの総重量が出力されるコードを記述してください。
veggies_weight = [["carrot", [120, 150, 130]], ["potato", [200, 250, 180]], ["onion", [100, 80, 90, 110]]]
出力例
carrotの総重量は400グラムです"
ヒント
sum
メソッドを使いましょう。
リスト内のすべての値を合計してくれます。
例
banana_price = [100, 100, 100]
puts banana_price.sum
# 出力結果「300」
回答
veggies_weight = [["carrot", [120, 150, 130]], ["potato", [200, 250, 180]], ["onion", [100, 80, 90, 110]]]
veggies_weight.each do |veggie|
name = veggie[0]
weights = veggie[1]
total_weights = weights.sum
puts "#{name}の総重量は#{total_weight}グラムです"
end
解説
veggies_weight.each do |veggie|
eachメソッドを使って、配列の各要素(野菜の名前とその重さのリストのペア)に対して処理を行います。
|veggie|は、各要素を受け取るためのブロック変数です。
name = veggie[0]
veggieは配列の各要素を指します。
veggie[0]は、その要素の最初の部分(野菜の名前)を取り出します。
weights = veggie[1]
veggie[1]は、その要素の2番目の部分(重さのリスト)を取り出します。
total_weight = weights.sum
weightsは重さのリストです。
sumメソッドを使って、リスト内のすべての重さを合計します。
puts "#{name}の総重量は#{total_weight}グラムです"
putsメソッドを使って、結果を出力します。
#{name}と#{total_weight}
は、それぞれ野菜の名前と総重量を文字列の中に埋め込むための記法です。