अंकों की एक स्ट्रिंग दी गई है। आपको उस स्ट्रिंग में लंबाई n की सभी लगातार सबस्ट्रिंग आउटपुट के रूप में उसी क्रम में देनी हैं जिस क्रम में वे आती हैं।
उदाहरण के लिए, स्ट्रिंग "49142" में 3 अंकों वाली ये सीरीज़ होती हैं:
और 4 अंकों वाली ये सीरीज़:
और अगर आप 5 अंकों की स्ट्रिंग से 6 अंकों की सीरीज़ माँगेंगे, तो जो मिलेगा उसके हकदार आप खुद होंगे।
ध्यान दीजिए कि इन सीरीज़ को इनपुट में सिर्फ आस-पास की जगहें लेनी होती हैं; अंकों का संख्यात्मक रूप से लगातार होना ज़रूरी नहीं है।
दो फंक्शन बनाइए: (दो? हाँ, कभी-कभी हम Go से थोड़ा ज़्यादा माँग लेते हैं।)
All एक ऐरे लौटाता है जिसमें s की लंबाई n वाली सभी सबस्ट्रिंग होती हैं।
All(n int, s string) []string
UnsafeFirst s की लंबाई n वाली पहली सबस्ट्रिंग लौटाता है।
UnsafeFirst(n int, s string) string
इस बिंदु पर आप इस अभ्यास को पूरा मान सकते हैं और आगे बढ़ सकते हैं।
लेकिन रुकिए, शायद आप एक उचित सवाल पूछें: इस फंक्शन का नाम Unsafe First क्यों है? अगर आपको दिलचस्पी है, तो बोनस अभ्यास के लिए आगे पढ़िए।
जब go test सफल हो जाए, तो go test -tags asktoomuch आज़माइए।
यह एक बिल्ड टैग का उपयोग करके ऐसे टेस्ट को चालू करता है जो पहले चालू नहीं था।
बिल्ड टैग की मदद से यह तय किया जा सकता है कि पैकेज कौन सी फाइलों का उपयोग करेगा।
हमारे मामले में यह तय करेगा कि कौन सी टेस्ट फाइलें उपयोग होंगी।
आप इनके बारे में और जानकारी Go के डॉक्युमेंटेशन में पढ़ सकते हैं।
आप देखेंगे कि आप इस asktoomuch टेस्ट को पास नहीं करा सकते। हमें कोई ऐसा तरीका चाहिए जिससे पता चले कि कुछ मामलों में आप स्ट्रिंग के पहले N अक्षर नहीं ले सकते। UnsafeFirst यह नहीं कर सकता, क्योंकि वह सिर्फ एक स्ट्रिंग लौटाता है।
इसे ठीक करने के लिए, चलिए इस फंक्शन में एक और रिटर्न वैल्यू जोड़ते हैं।
First(int, string) (first string, ok bool) बनाइए और go test -tags first से टेस्ट कीजिए।
ok bool दूसरा रिटर्न आर्गुमेंट Go में एक आम और आइडियोमैटिक पैटर्न है।
उदाहरण के लिए, आप इसे मैप लुकअप और टाइप असेर्शन में देखते हैं।
Exercism पर साइन अप कीजिए और Go को 34 कॉन्सेप्ट165 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।