ट्रैक
/
Groovy
Groovy
/
अभ्यास
/
रोबोट सिम्युलेटर
रोबोट सिम्युलेटर

रोबोट सिम्युलेटर

आसान

निर्देश

एक रोबोट सिम्युलेटर लिखिए।

रोबोट बनाने वाले एक कारखाने के परीक्षण केंद्र को एक ऐसा प्रोग्राम चाहिए जो रोबोट की गतियों की जाँच करे।

रोबोट तीन तरह की गतियाँ कर सकते हैं:

  • दाएँ मुड़ना
  • बाएँ मुड़ना
  • आगे बढ़ना

रोबोट को एक काल्पनिक अनंत ग्रिड पर रखा जाता है। हर रोबोट का कोई {x,y} निर्देशांक होता है, जैसे {3,8}, और उसका मुँह किसी एक दिशा (north, east, south या west) की ओर होता है। इस ग्रिड में निर्देशांक north और east की ओर बढ़ते हैं।

इसके बाद रोबोट को कई निर्देश मिलते हैं। तब परीक्षण केंद्र जाँचता है कि रोबोट की नई स्थिति क्या है और उसका मुँह किस दिशा की ओर है।

  • अक्षरों की स्ट्रिंग "RAALAL" का मतलब यह है:
    • दाएँ मुड़ना
    • दो बार आगे बढ़ना
    • बाएँ मुड़ना
    • एक बार आगे बढ़ना
    • फिर एक बार और बाएँ मुड़ना
  • मान लीजिए एक रोबोट {7, 3} पर है और उसका मुँह north की ओर है। अब इन निर्देशों को चलाने पर वह {9, 4} पर पहुँचना चाहिए और उसका मुँह west की ओर होना चाहिए।

Groovy में प्रॉपर्टी और फील्ड

इस अभ्यास में आपने देखा होगा कि स्टब में getX() जैसे गेटर बनाए गए हैं, लेकिन टेस्ट वैल्यू को सीधे .x की तरह पढ़ते हैं। ऐसा इसलिए होता है क्योंकि Groovy प्रॉपर्टी को इसी तरह परिभाषित करता है। चलिए इसे अलग-अलग हिस्सों में समझते हैं:

  • फील्ड किसी क्लास, इंटरफेस या ट्रेट का वह सदस्य है जिसमें डेटा संग्रहीत होता है।
  • प्रॉपर्टी किसी क्लास की बाहर से दिखने वाली विशेषता होती है।

Groovy की प्रॉपर्टी के बारे में मुख्य बातें:

  • Groovy उन फील्ड के लिए, जो प्राइवेट नहीं हैं, गेटर और सेटर अपने आप बना देता है (या सिर्फ गेटर, अगर फील्ड को final चिह्नित किया गया हो)।
  • प्रॉपर्टी को नाम से पढ़ा जा सकता है (जैसे इस अभ्यास के टेस्ट में), और तब गेटर या सेटर अपने आप कॉल हो जाता है।
  • परंपरा के अनुसार Groovy किसी प्रॉपर्टी को तब भी पहचान लेता है जब उसके पीछे कोई बैकिंग फील्ड न हो, अगर गेटर या सेटर मौजूद हों।

इस अभ्यास में हमने सिर्फ ज़रूरी गेटर दिए हैं (और ऊपर बताए अनुसार प्रॉपर्टी भी उन्हीं से बनती हैं), ताकि हल सही तरीके से लिखा जाए। अपने हल के लिए कौन-सी फील्ड और उनके कौन-से टाइप सबसे उपयुक्त हैं, यह तय करने की छूट आपको है।

अगर आप फील्ड और प्रॉपर्टी के बारे में और गहराई से जानना चाहते हैं, तो Groovy के डॉक्यूमेंटेशन में अध्याय 3.3. फील्ड और प्रॉपर्टी देखिए।


स्रोत

एक प्रसिद्ध कंपनी के इंटरव्यू सवाल से प्रेरित।
GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
Groovy Exercism

रोबोट सिम्युलेटर शुरू करने के लिए तैयार हैं?

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