在庫スナップショット
CoddyのRubyジャーニー「ロジックとフロー」セクションの一部 — レッスン 55/56。
ハッシュ、Enumerableチェーン、group_by、そして少しの書式設定を活用した在庫レポートです。
チャレンジ
中級配列 inventory が与えられています。各アイテムは :name、:category、:qty、および :price を持つハッシュです。
以下の4行を出力してください:
- 全アイテムの在庫の総額(
qty * priceの合計)を整数として出力してください。 - アイテム数が最も多いカテゴリを、
Top category: <name> (<count>)の形式で出力してください。同数の場合は、カテゴリ名のアルファベット順で決定します。 - 在庫切れ(
qty == 0)のアイテムの名前をアルファベット順にソートし、,でつなげて出力してください。該当するものがない場合は、(none)と出力してください。 - 単価が高い上位3つのアイテムの名前を、価格の高い順に
,でつなげて出力してください。価格が同じ場合は、名前のアルファベット順で決定します。
デフォルトの inventory の場合、出力は以下のようになります:
232
Top category: food (3)
milk
chair, lamp, milk自分で試してみよう
inventory = [
{ name: "apple", category: "food", qty: 10, price: 2 },
{ name: "bread", category: "food", qty: 4, price: 3 },
{ name: "milk", category: "food", qty: 0, price: 4 },
{ name: "chair", category: "furniture", qty: 2, price: 35 },
{ name: "lamp", category: "furniture", qty: 5, price: 20 },
{ name: "pencil", category: "stationery", qty: 30, price: 1 }
]
# TODO: 合計金額、最も多いカテゴリー、在庫切れの商品名、価格の高い順トップ3を表示する
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。