0
0

【Ruby初級問題】それぞれの野菜の重さは合計いくつ?

Posted at

問題

以下のように、野菜の名前と重さが入った配列があります。この配列を用いて、野菜の名前とそれぞれの総重量が出力されるコードを記述してください。

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}は、それぞれ野菜の名前と総重量を文字列の中に埋め込むための記法です。

0
0
0

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
0
0