ट्रैक
/
Ruby
Ruby
/
अभ्यास
/
बुटीक इन्वेंटरी
बुटीक इन्वेंटरी

बुटीक इन्वेंटरी

सीखने का अभ्यास

परिचय

और एन्यूमरेशन मेथड

"पक्षी गणना" में आपका परिचय count, any?, select, all? और map एन्यूमरेशन मेथड से हुआ था। यहाँ उनका दोहराव है, साथ में कुछ अतिरिक्त मेथड भी:

fibonacci = [0, 1, 1, 2, 3, 5, 8, 13]

fibonacci.count  { |number| number == 1 }   #=> 2
fibonacci.any?   { |number| number > 20 }   #=> false
fibonacci.none?  { |number| number > 20 }   #=> true
fibonacci.select { |number| number.odd? }   #=> [1, 1, 3, 5, 13]
fibonacci.all?   { |number| number < 20 }   #=> true
fibonacci.map    { |number| number * 2  }   #=> [0, 2, 2, 4, 6, 10, 16, 26]
fibonacci.select { |number| number >= 5 }   #=> [5, 8, 13]
fibonacci.find   { |number| number >= 6 }   #=> 8

# Some methods work with or without a block
fibonacci.sum  #=> 33
fibonacci.sum { |number| number * number }  #=> 273

# There are also methods to help with nested arrays:
animals = [ ['cat', 'bob'], ['horse', 'caris'], ['mouse', 'arya'] ]
animals.flatten  #=> ["cat", "bob", "horse", "caris", "mouse", "arya"]

हैश को एन्यूमरेट करना

Hash ऑब्जेक्ट को एन्यूमरेट करना बिल्कुल Array ऑब्जेक्ट को एन्यूमरेट करने जैसा ही है, बस अंतर यह है कि ब्लॉक को दो आर्गुमेंट मिलते हैं: की और वैल्यू:

pet_names = {cat: "bob", horse: "caris", mouse: "arya"}
pet_names.each { |animal, name| ... }

अगर आपको इनमें से सिर्फ एक वैल्यू चाहिए, तो आप विशेष _ चिह्न का इस्तेमाल करके बता सकते हैं कि दूसरी वैल्यू की ज़रूरत नहीं है। इससे डेवलपर के लिए चीज़ें साफ रहती हैं और प्रदर्शन भी बेहतर होता है।

pet_names = {cat: "bob", horse: "caris", mouse: "arya"}
pet_names.map { |_, name| name }  #=> ["bob", "caris", "arya"]

नेस्टेड एन्यूमरेशन

आप नेस्टेड ब्लॉक में भी एन्यूमरेट कर सकते हैं, और मेथड को एक के बाद एक जोड़ सकते हैं। उदाहरण के लिए, मान लीजिए हमारे पास जानवरों के हैश का एक ऐरे है, और हमें छोटे नाम वाले जानवर निकालने हैं, तो हम कुछ ऐसा लिख सकते हैं:

pets = [
  { animal: "cats", names: ["bob", "fred", "sandra"] },
  { animal: "horses", names: ["caris", "black beard", "speedy"] },
  { animal: "mice", names: ["arya", "jerry"] }
]

pets.map { |pet|
  pet[:names].select { |name| name.length <= 5 }
}.flatten.sort
#=> ["arya", "bob", "caris", "fred", "jerry"]

निर्देश

आप एक ऑनलाइन फैशन बुटीक चलाते हैं। आपकी सालाना बड़ी सेल आने वाली है, इसलिए आप कुछ ऐसी सुविधाएँ बनाना चाहते हैं जिनसे अपनी इन्वेंटरी का हिसाब रखकर यह पक्का कर सकें कि आप तैयार हैं।

इन्वेंटरी का एक आइटम एक हैश से दर्शाया जाता है, और पूरी इन्वेंटरी इन हैशों का एक ऐरे होती है।

[
  {
    name: "White Shirt",
    price: 40,
    quantity_by_size: {s: 3, m: 7, l: 8, xl: 4}
  },
  { ... }
]

1. आइटम के नामों का ऐरे लौटाइए

BoutiqueInventory.item_names लागू कीजिए। इसे आइटम के नामों का ऐरे वर्णमाला के क्रम में लौटाना चाहिए।

BoutiqueInventory.new([
  {price: 65.00, name: "Maxi Brown Dress", quantity_by_size: {s: 3, m: 7, l: 8, xl: 4}},
  {price: 50.00, name: "Red Short Skirt", quantity_by_size: {}},
  {price: 29.99, name: "Black Short Skirt", quantity_by_size: {s: 1, xl: 4}},
  {price: 20.00, name: "Bamboo Socks Cats", quantity_by_size: {s: 7, m: 2}}
]).item_names

#=> ["Bamboo Socks Cats", "Black Short Skirt", "Maxi Brown Dress", "Red Short Skirt"]

2. सभी सस्ते आइटम लौटाइए

BoutiqueInventory.cheap लागू कीजिए। इसे वे सभी आइटम लौटाने चाहिए जिनकी कीमत $30 से कम है।

BoutiqueInventory.new([
  {price: 65.00, name: "Maxi Brown Dress", quantity_by_size: {s: 3, m: 7, l: 8, xl: 4}},
  {price: 50.00, name: "Red Short Skirt", quantity_by_size: {}},
  {price: 29.99, name: "Black Short Skirt", quantity_by_size: {s: 1, xl: 4}},
  {price: 20.00, name: "Bamboo Socks Cats", quantity_by_size: {s: 7, m: 2}}
]).cheap

# => [
#      {price: 29.99, name: "Black Short Skirt", quantity_by_size: {s: 1, xl: 4}},
#      {price: 20.00, name: "Bamboo Socks Cats", quantity_by_size: {s: 7, m: 2}}
#    ]

3. स्टॉक से बाहर वाले सभी आइटम लौटाइए

BoutiqueInventory.out_of_stock लागू कीजिए। इसे वे सभी आइटम लौटाने चाहिए जिनका कोई स्टॉक नहीं है (यानी जिनमें quantity_by_size खाली है)।

BoutiqueInventory.new([
  {price: 65.00, name: "Maxi Brown Dress", quantity_by_size: {s: 3, m: 7, l: 8, xl: 4}},
  {price: 50.00, name: "Red Short Skirt", quantity_by_size: {}},
  {price: 29.99, name: "Black Short Skirt", quantity_by_size: {s: 1, xl: 4}},
  {price: 20.00, name: "Bamboo Socks Cats", quantity_by_size: {s: 7, m: 2}}
]).out_of_stock

#=> [{price: 50.00, name: "Red Short Skirt", quantity_by_size: {}}]

4. किसी एक आइटम का स्टॉक लौटाइए

किसी आइटम का नाम देखकर उसका स्टॉक लौटाने के लिए BoutiqueInventory.stock_for_item(name) लागू कीजिए:

BoutiqueInventory.new([
  {price: 65.00, name: "Maxi Brown Dress", quantity_by_size: {s: 3, m: 7, l: 8, xl: 4}},
  {price: 50.00, name: "Red Short Skirt", quantity_by_size: {}},
  {price: 29.99, name: "Black Short Skirt", quantity_by_size: {s: 1, xl: 4}},
  {price: 20.00, name: "Bamboo Socks Cats", quantity_by_size: {s: 7, m: 2}}
]).stock_for_item("Black Short Skirt")

#=> {s: 1, xl: 4}

5. कुल स्टॉक लौटाइए

अपने गोदाम में मौजूद आइटम की कुल संख्या निकालने के लिए BoutiqueInventory.total_stock लागू कीजिए:

BoutiqueInventory.new([
  {price: 65.00, name: "Maxi Brown Dress", quantity_by_size: {s: 3, m: 7, l: 8, xl: 4}},
  {price: 50.00, name: "Red Short Skirt", quantity_by_size: {}},
  {price: 29.99, name: "Black Short Skirt", quantity_by_size: {s: 1, xl: 4}},
  {price: 20.00, name: "Bamboo Socks Cats", quantity_by_size: {s: 7, m: 2}}
]).total_stock

#=> 36
GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
Ruby Exercism

बुटीक इन्वेंटरी शुरू करने के लिए तैयार हैं?

Exercism पर साइन अप कीजिए और Ruby को 21 कॉन्सेप्ट121 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।