ट्रैक
/
Elixir
Elixir
/
अभ्यास
/
वाइन तहखाना
वाइन तहखाना

वाइन तहखाना

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

परिचय

कीवर्ड ऐरे

कीवर्ड ऐरे एक की-वैल्यू डेटा स्ट्रक्चर है।

[month: "April", year: 2018]

कीवर्ड ऐरे, {key, value} टुपलों का ऐरे होते हैं, और इन्हें इसी तरह भी लिखा जा सकता है, लेकिन छोटा सिंटैक्स ज़्यादा इस्तेमाल किया जाता है।

[month: "April"] == [{:month, "April"}]
# => true

कीवर्ड ऐरे में की एटम होनी चाहिए, लेकिन वैल्यू कुछ भी हो सकती हैं। हर की को एक से अधिक बार इस्तेमाल किया जा सकता है। कीवर्ड ऐरे में की-वैल्यू जोड़े क्रम में रहते हैं।

आप कीवर्ड ऐरे के साथ ऐरे जैसे ही तरीके अपना सकते हैं, या Keyword मॉड्यूल का इस्तेमाल कर सकते हैं।

निर्देश

आप एक ऐसे शानदार रेस्तराँ के प्रबंधक हैं जिसमें काफी बड़ा वाइन सेलर है। आपके बहुत से ग्राहक वाइन के शौकीन हैं और अपेक्षाएँ भी ऊँची रखते हैं। किसी खास ग्राहक के लिए सही वाइन की बोतल ढूँढना आसान काम नहीं है।

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

1. वाइन के रंग समझाइए

अपने ऐप की स्वागत स्क्रीन पर आप हर वाइन रंग का छोटा-सा विवरण दिखाना चाहते हैं।

WineCellar.explain_colors/0 फंक्शन बनाइए। यह कोई आर्गुमेंट नहीं लेता और एक कीवर्ड लिस्ट लौटाता है, जिसमें वाइन के रंग कीज़ होते हैं और विवरण वैल्यू।

रंग विवरण
:white छिलकों के संपर्क के बिना किण्वित।
:red गहरे रंग के अंगूरों को छिलकों के संपर्क में रखकर किण्वित।
:rose कुछ समय छिलकों के संपर्क में किण्वित, लेकिन इतना नहीं कि लाल वाइन कहलाए।

2. किसी दिए रंग की सभी वाइन निकालिए

वाइन की एक बोतल को तीन एलिमेंट वाले ट्यूपल से दिखाया जाता है: अंगूर की किस्म, साल और मूल देश। वाइन को उनके रंग के हिसाब से एक कीवर्ड लिस्ट में रखा जाता है।

[
  white: {"Chardonnay", 2015, "Italy"},
  white: {"Pinot grigio", 2017, "Germany"},
  red: {"Pinot noir", 2016, "France"},
  rose: {"Dornfelder", 2018, "Germany"}
]

WineCellar.filter/3 फंक्शन बनाइए। यह वाइन की एक कीवर्ड लिस्ट, एक रंग ऐटम और ऑप्शन की एक कीवर्ड लिस्ट लेता है, जिसकी डिफ़ॉल्ट वैल्यू [] है। फंक्शन को दिए गए रंग की वाइन की लिस्ट लौटानी चाहिए।

WineCellar.filter(
  [
    white: {"Chardonnay", 2015, "Italy"},
    white: {"Pinot grigio", 2017, "Germany"},
    red: {"Pinot noir", 2016, "France"},
    rose: {"Dornfelder", 2018, "Germany"}
  ],
  :white
)

# => [
#      {"Chardonnay", 2015, "Italy"},
#      {"Pinot grigio", 2017, "Germany"}
#    ]

3. किसी दिए साल में बोतलबंद, किसी दिए रंग की सभी वाइन निकालिए

WineCellar.filter/3 फंक्शन को बढ़ाइए। जब इसे :year ऑप्शन दिया जाए, तो फंक्शन को दिए गए साल की, दिए गए रंग वाली वाइन की लिस्ट लौटानी चाहिए।

पहले से बने WineCellar.filter_by_year/2 फंक्शन का इस्तेमाल कीजिए। यह वाइन की एक लिस्ट और एक साल आर्गुमेंट के तौर पर लेता है और दिए गए साल की वाइन की लिस्ट लौटाता है।

WineCellar.filter(
  [
    white: {"Chardonnay", 2015, "Italy"},
    white: {"Pinot grigio", 2017, "Germany"},
    red: {"Pinot noir", 2016, "France"},
    rose: {"Dornfelder", 2018, "Germany"}
  ],
  :white,
  year: 2015
)

# => [
#      {"Chardonnay", 2015, "Italy"}
#    ]

4. किसी दिए देश में बोतलबंद, किसी दिए रंग की सभी वाइन निकालिए

WineCellar.filter/3 फंक्शन को बढ़ाइए। जब इसे :country ऑप्शन दिया जाए, तो फंक्शन को दिए गए देश की, दिए गए रंग वाली वाइन की लिस्ट लौटानी चाहिए।

पहले से बने WineCellar.filter_by_country/2 फंक्शन का इस्तेमाल कीजिए। यह वाइन की एक लिस्ट और एक देश आर्गुमेंट के तौर पर लेता है और दिए गए देश की वाइन की लिस्ट लौटाता है।

ध्यान रखिए कि जब फंक्शन को :year और :country दोनों ऑप्शन दिए जाएँ, तो यह किसी भी क्रम में काम करे।

WineCellar.filter(
  [
    white: {"Chardonnay", 2015, "Italy"},
    white: {"Pinot grigio", 2017, "Germany"},
    red: {"Pinot noir", 2016, "France"},
    rose: {"Dornfelder", 2018, "Germany"}
  ],
  :white,
  year: 2015,
  country: "Germany"
)

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

वाइन तहखाना शुरू करने के लिए तैयार हैं?

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