Gilded Rose

Gilded Rose

कठिन

निर्देश

Gilded Rose की इंजीनियरिंग टीम में आपका स्वागत है! जैसा कि आप जानते हैं, हम एक ऐसी सराय हैं जो सिर्फ सबसे बढ़िया सामान खरीदती और बेचती है। हमारा सामान जैसे-जैसे अपनी बिक्री की तारीख के करीब पहुँचता है, वैसे-वैसे उसकी गुणवत्ता लगातार गिरती जाती है। इसलिए हमारे पास एक इन्वेंटरी सिस्टम है जो इन आँकड़ों का हिसाब रखता है।

हम चाहते हैं कि आप हमारे सिस्टम में एक नया फीचर जोड़ें, ताकि हम आइटम की एक नई श्रेणी बेचना शुरू कर सकें। लेकिन कोड बहुत बिखरा हुआ है, और अगर आप पहले मौजूदा कोड को रीफैक्टर नहीं करेंगे, तो नया फीचर जोड़ना मुश्किल होगा।

तो आपके सामने दो काम हैं: पहले इन्वेंटरी सिस्टम को रीफैक्टर कीजिए, फिर नया फीचर जोड़िए।

इन्वेंटरी सिस्टम का अवलोकन

हमारे सिस्टम की मूल बातें ये हैं:

  • सभी आइटम में एक "sell in" एट्रिब्यूट होता है, जो बताता है कि आइटम बेचने के लिए हमारे पास कितने दिन बचे हैं।
  • सभी आइटम में एक "quality" एट्रिब्यूट होता है, जो बताता है कि आइटम कितना मूल्यवान है।
  • हर दिन के अंत में हमारा सिस्टम हर आइटम की ये दोनों वैल्यू घटा देता है।

बहुत आसान, है ना? अब आगे से यह दिलचस्प हो जाता है:

  • बिक्री की तारीख आते ही गुणवत्ता दोगुनी तेज़ी से घटती है।
  • किसी आइटम की गुणवत्ता कभी ऋणात्मक नहीं होती।
  • Aged Brie जितना पुराना होता जाता है, उसकी गुणवत्ता उतनी ही बढ़ती जाती है।
  • किसी आइटम की गुणवत्ता कभी 50 से अधिक नहीं होती।
  • Sulfuras एक पौराणिक आइटम है, इसलिए उसकी कोई बिक्री की तारीख नहीं होती, और उसकी गुणवत्ता 80 होती है, जो कभी घटती नहीं।
  • Backstage passes, Aged Brie की तरह, बिक्री की तारीख पास आने पर इनकी गुणवत्ता बढ़ती जाती है: जब 10 दिन या उससे कम बचे हों तो गुणवत्ता 2 बढ़ती है, और जब 5 दिन या उससे कम बचे हों तो 3 बढ़ती है, लेकिन कॉन्सर्ट के बाद गुणवत्ता गिरकर 0 हो जाती है।

1. रीफैक्टर कीजिए

नए फीचर का रास्ता बनाने के लिए, मौजूदा कोड को रीफैक्टर कीजिए और उसे बदलने में आसान बनाइए।

आप जो भी बदलाव चाहें कीजिए और जितना चाहें नया कोड जोड़िए, बस शर्त यह है कि सब कुछ अब भी ठीक से काम करता रहे (यानी मौजूदा फीचर्स के टेस्ट अब भी पास हों)।

ध्यान दें: आप यह मान सकते हैं कि आइटम हमेशा एक मान्य गुणवत्ता के साथ शुरू होते हैं। दूसरे शब्दों में, स्वचालित टेस्ट यह नहीं जाँचते कि किसी आइटम की शुरुआती गुणवत्ता अधिकतम से ऊपर होने पर क्या होता है, या जब किसी Sulfuras की शुरुआती गुणवत्ता 80 के अलावा कुछ और हो।

2. नया फीचर जोड़िए

हमने हाल ही में Conjured आइटम के एक आपूर्तिकर्ता से करार किया है। आपको हमारे सिस्टम में ये नियम जोड़ने हैं:

  • Conjured आइटम की बिक्री की तारीख आते ही गुणवत्ता गिरकर 0 हो जाती है। इसके अलावा:
    • Conjured normal items की गुणवत्ता उन साधारण आइटमों से दोगुनी तेज़ी से घटती है जो Conjured नहीं हैं।
    • Conjured Sulfuras की बिक्री की तारीख होती है, जबकि उस Sulfuras की नहीं जो Conjured नहीं है।
    • Conjured backstage passes की गुणवत्ता Conjured न होने की तुलना में 1 कम बढ़ती है।

स्रोत

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

Gilded Rose शुरू करने के लिए तैयार हैं?

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