সংখ্যার একটি স্ট্রিং দেওয়া হলে, সেই স্ট্রিংয়ের ভেতরে n দৈর্ঘ্যের সব সংলগ্ন সাবস্ট্রিং যে ক্রমে আছে সেই ক্রমে আউটপুট দিন।
উদাহরণস্বরূপ, "49142" স্ট্রিংটিতে ৩ সংখ্যার সিরিজগুলো হলো:
আর ৪ সংখ্যার সিরিজগুলো:
আর ৫ সংখ্যার একটি স্ট্রিং থেকে যদি ৬ সংখ্যার সিরিজ চান, তাহলে যা-ই পান না কেন, তা আপনার প্রাপ্য।
লক্ষ্য করুন, এই সিরিজগুলো ইনপুটে কেবল পাশাপাশি অবস্থানে থাকলেই হয়; অঙ্কগুলো সংখ্যাগতভাবে পরপর হওয়ার দরকার নেই।
দুটি ফাংশন ডিফাইন করুন: (দুটি? হ্যাঁ, কখনও কখনও আমরা Go-এর কাছে আরও বেশি চাই।)
All, n দৈর্ঘ্যের s-এর সব সাবস্ট্রিংয়ের একটি অ্যারে রিটার্ন করে।
All(n int, s string) []string
UnsafeFirst, n দৈর্ঘ্যের s-এর প্রথম সাবস্ট্রিং রিটার্ন করে।
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টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।