किंडरगार्टन की कक्षा पौधे उगाने के बारे में सीख रही है। शिक्षक को लगा कि बच्चों को बीज देना अच्छा रहेगा, ताकि वे उन्हें मिट्टी में लगाकर उगा सकें। इसके लिए बच्चों ने खिड़कियों के किनारों पर छोटे-छोटे कप रखे हैं और हर कप में एक तरह का पौधा लगाया है। बच्चों को चार तरह के उपलब्ध बीजों में से अपनी पसंद चुनने का मौका मिला: grass, clover, radishes और violets.
आपको दिए गए आरेख से यह पता लगाना है कि किंडरगार्टन क्लास का हर बच्चा किन पौधों के लिए ज़िम्मेदार है।
क्लास में 12 बच्चे हैं:
चार अलग-अलग तरह के बीज बोए जाते हैं:
| पौधा | आरेख में संकेत |
|---|---|
| Grass | G |
| Clover | C |
| Radish | R |
| Violet | V |
हर बच्चे को चार कप मिलते हैं, हर पंक्ति में दो:
[window][window][window]
........................ # each dot represents a cup
........................
टीचर बच्चों को उनके नामों के अंग्रेज़ी वर्णक्रम के अनुसार कप बाँटती हैं, यानी सबसे पहले Alice की बारी आती है और सबसे अंत में Larry की।
यहाँ एक उदाहरण आरेख दिया गया है, जो Alice के पौधे दिखाता है:
[window][window][window]
VR......................
RG......................
पहली पंक्ति खिड़कियों के सबसे पास है। उसमें Alice के पास एक violet और एक radish है। दूसरी पंक्ति में Alice के पास एक radish और कुछ grass है।
आपके प्रोग्राम को पौधे बाएँ से दाएँ तक दिए जाएँगे, और शुरुआत खिड़कियों के सबसे पास वाली पंक्ति से होगी। इससे आपके प्रोग्राम को यह पता लगाना चाहिए कि कौन-से पौधे किस बच्चे के हैं।
उदाहरण के लिए, अगर प्रोग्राम को बताया जाए कि बगीचा ऐसा दिखता है:
[window][window][window]
VRCGVVRVCGGCCGVRGCVCGCGV
VRCCCGCRRGVCGCRVVCVGCGCV
तो अगर उससे Alice के पौधों के बारे में पूछा जाए, तो उसे यह बताना चाहिए:
और अगर Bob के पौधों के बारे में पूछा जाए, तो नतीजा यह होगा:
इस अभ्यास में आपको एक ऐसी क्लास लिखनी है जो किंडरगार्टन के हर बच्चे के लिए एक मेथड देती है।
अगर आप 12 अलग-अलग मेथड खुद बनाने के बजाय थोड़ी मेटाप्रोग्रामिंग का इस्तेमाल करें, तो आपका काम कम दोहराव वाला (और ज़्यादा मज़ेदार!) बन सकता है।
शुरू कहाँ से करें, यह समझ न आ रहा हो, तो method_missing और define_method मेथड देखिए।
Exercism पर साइन अप कीजिए और Ruby को 21 कॉन्सेप्ट121 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।