रोबोट फैक्ट्री की सेटिंग्स संभालिए।
जब कोई रोबोट फैक्ट्री से निकलता है, तब उसका कोई नाम नहीं होता।
जब आप किसी रोबोट को पहली बार चालू करते हैं, तो दो बड़े अक्षरों के बाद तीन अंकों के फॉर्मेट में एक यादृच्छिक नाम बनाया जाता है, जैसे RX837 या BC811.
कभी-कभी हमें किसी रोबोट को उसकी फैक्ट्री सेटिंग्स पर रीसेट करना पड़ता है, जिसका मतलब है कि उसका नाम मिट जाता है। अगली बार जब आप पूछेंगे, तो वह रोबोट एक नया यादृच्छिक नाम बताएगा।
नाम यादृच्छिक होने चाहिए: वे ऐसे क्रम का पालन नहीं करने चाहिए जिसका पहले से अनुमान लगाया जा सके। यादृच्छिक नाम इस्तेमाल करने पर नाम टकराने का जोखिम रहता है। आपके हल को यह सुनिश्चित करना होगा कि हर मौजूदा रोबोट का नाम यूनिक हो।
टेस्ट सूट डिफॉल्ट रूप से केवल लगभग 100 नाम ही बनाता है। वैध नाम लगभग 7 लाख हैं, इसलिए इससे टकराव की संभावना बहुत कम रहेगी। टेस्ट सूट के अलावा किसी और तरीके से भी अपने हल को टकराव के लिए जाँचने पर विचार कीजिए।
यह अभ्यास Julia के टाइप सिस्टम की हमारी खोज को आगे बढ़ाता है, इस बार म्यूटेबल टाइप के साथ, और हमें यादृच्छिक संख्याओं के निर्माण से परिचित कराता है।
हम यह मानेंगे कि रोबोट को फैक्ट्री सेटिंग्स पर रीसेट करना एक सर्जरी जैसा है: यह उस चीज़ में बदलाव करती है, पर उसे किसी दूसरी चीज़ से नहीं बदलती। हम समस्या को ऐसे भी डिज़ाइन कर सकते थे कि रोबोट को रीसेट करने से एक नया रोबोट बने, लेकिन हर समस्या को केवल अपरिवर्तनीय डेटा स्ट्रक्चर के सहारे नहीं डिज़ाइन किया जा सकता (शुद्ध फंक्शनल भाषाएँ भी अपने रनटाइम के अंदर परिवर्तनशीलता से जूझती हैं!)।
Julia में जो फंक्शन अपने आर्गुमेंट में बदलाव करते हैं, उनके नाम के अंत में परंपरा से ! लगाया जाता है।
तो इस काम के लिए हमारे मेथड का नाम reset! होगा।
यह केवल एक परंपरा है, लेकिन लगभग सारा प्रकाशित Julia कोड इसका पालन करता है, और हो सकता है कि आप भी मानने लगें कि यह बहुत उपयोगी है!
आपको इन चीज़ों को बनाना होगा: अद्वितीय नाम बनाने का एक मेथड, रोबोट को दर्शाने वाला एक स्ट्रक्चर, रोबोट को रीसेट करने का एक मेथड, और रोबोट का नाम लेने का एक मेथड।
आपके लिए यह मददगार हो सकता है कि पहले अपने प्रोग्राम को इस तरह डिज़ाइन कीजिए कि वह रोबोट के लिए बस एक यादृच्छिक नाम निकाले (टकराव की चिंता किए बिना)। इसके बाद ऐसी योजना के बारे में सोचिए और उसे डिज़ाइन कीजिए जिसमें कभी दोहरे नाम न दिए जाएँ। अपने डिज़ाइन में ध्यान रखिए कि जैसे-जैसे नाम खत्म होते जाते हैं, नाम बनाने का रन टाइम कैसे बदलता है। आप कॉल करने वाले को कौन-सी गारंटियाँ देना चाहते हैं?
Exercism पर साइन अप कीजिए और Julia को 35 कॉन्सेप्ट128 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।