আপনি LinkLine-এ যোগ দিয়েছেন, যা একটি শীর্ষস্থানীয় যোগাযোগ কোম্পানি এবং সবার জন্য নির্ভরযোগ্য সংযোগ নিশ্চিত করতে কাজ করে। দলটির সামনে বড় একটি চ্যালেঞ্জ: ব্যবহারকারীরা নানা রকম ফরম্যাটে ফোন নম্বর জমা দেন, যেমন ড্যাশ, স্পেস, ডট, বন্ধনী, এমনকি প্রিফিক্স। কিছু নম্বর বৈধ, আবার কিছু নম্বর ব্যবহারের অযোগ্য।
আপনার মিশন হলো এই বিশৃঙ্খলাকে শৃঙ্খলায় রূপান্তর করা। আপনি বৈধ নম্বরগুলো পরিষ্কার করবেন এবং সিস্টেমে ব্যবহারের জন্য সেগুলো যথাযথভাবে ফরম্যাট করবেন। একই সাথে আপনি অবৈধ এন্ট্রিগুলো চিহ্নিত করে বাদ দেবেন।
LinkLine-এর কার্যক্রমের সফলতা নির্ভর করে উপযোগীকে অযোগ্য থেকে আলাদা করার আপনার দক্ষতার উপর। চ্যালেঞ্জটি নিয়ে সংযোগগুলো নির্বিঘ্নে সচল রাখতে আপনি তৈরি তো?
ব্যবহারকারীর দেওয়া ফোন নম্বরগুলো এমনভাবে পরিষ্কার করুন যাতে সেগুলোতে SMS পাঠানো যায়।
North American Numbering Plan (NANP) হলো একটি টেলিফোন নম্বরিং ব্যবস্থা, যা উত্তর আমেরিকার যুক্তরাষ্ট্র, কানাডা বা বারমুডার মতো অনেক দেশ ব্যবহার করে।
NANP-ভুক্ত সব দেশ একই আন্তর্জাতিক দেশ কোড ব্যবহার করে: 1।
NANP নম্বরগুলো দশ অঙ্কের সংখ্যা, যা তিন অঙ্কের একটি নাম্বারিং প্ল্যান এরিয়া কোড (সাধারণত যাকে এরিয়া কোড বলা হয়) দিয়ে শুরু হয়, তারপর আসে সাত অঙ্কের স্থানীয় নম্বর। স্থানীয় নম্বরের প্রথম তিন অঙ্ক এক্সচেঞ্জ কোড নির্দেশ করে, তারপর আসে অনন্য চার অঙ্কের সংখ্যাটি, যা সাবস্ক্রাইবার নম্বর।
ফরম্যাটটি সাধারণত এভাবে দেখানো হয়
NXX NXX-XXXX
যেখানে N হলো ২ থেকে ৯ পর্যন্ত যেকোনো অঙ্ক এবং X হলো ০ থেকে ৯ পর্যন্ত যেকোনো অঙ্ক।
কখনো কখনো এদের শুরুতে দেশ কোডও যুক্ত থাকে (যা 1 বা +1 হিসেবে লেখা হয়)।
আপনার কাজ হলো, বিরামচিহ্ন এবং থাকলে দেশ কোড সরিয়ে ভিন্নভাবে ফরম্যাট করা টেলিফোন নম্বরগুলো পরিষ্কার করা।
উদাহরণস্বরূপ, এই ইনপুটগুলো
+1 (613)-995-0253613-995-02531 613 995 0253613.995.0253সবগুলোরই আউটপুট হওয়া উচিত
6139950253
নোট: যেহেতু এই অনুশীলনীতে শুধু NANP-ভুক্ত দেশে ব্যবহৃত টেলিফোন নম্বর নিয়ে কাজ করা হয়, তাই শুধু 1-কেই বৈধ দেশ কোড ধরা হয়।
সহজ ও পাঠযোগ্য রাখার জন্য: Java-এর String মেথডের বদলে Scala-এর কালেকশন ফাংশনগুলো ব্যবহার করার কথা ভাবতে পারেন।
মনে রাখবেন, Scala-তে একটি String আসলে একটি Seq[Char]-ও বটে, তাই String মেথডগুলোর মতোই সহজে এগুলো কল করা যায়।
কয়েকটি উদাহরণ:
replaceAll-এর বদলে filter
substring-এর বদলে take, takeRight, drop, head, tail
আরেকটি বিষয় ভেবে দেখতে পারেন: String-কে List[Char]-এ বদলে ফেলে তারপর :: অপারেটরের সঙ্গে প্যাটার্ন ম্যাচিং ব্যবহার করা।
Exercism-এ সাইন আপ করুন, Scala ট্র্যাকের 95টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।