একদিন মাহার ক্যাফেতে বসে সবাই মিলে কফি খাচ্ছিল। চারদিকে কাজের ব্যস্ততা, কাস্টমারদের চা-কফি দেওয়া হচ্ছে, কিন্তু তার মাঝেও মাহা সবসময় নতুন কিছু শিখতে চায়। তাই সে একটি ছোট্ট চ্যালেঞ্জের কথা ভাবল—জাভাস্ক্রিপ্ট দিয়ে কীভাবে একটি স্ট্রিং প্যালিনড্রোম কিনা তা যাচাই করা যায়।
মাহা তার ল্যাপটপ খুলল, পাশে দাঁড়িয়ে থাকা হাবিবকে বলল, হাবিব, তুমি কি জানো প্যালিনড্রোম কী? হাবিব হেসে বলল, অবশ্যই! প্যালিনড্রোম হলো এমন একটি শব্দ বা বাক্য, যেটা উল্টিয়ে পড়লেও একই থাকে। যেমন ‘মাম’, ‘দাদ’, ‘level’ এই শব্দগুলো সবই প্যালিনড্রোম।
মাহা মাথা নেড়ে বলল, ঠিক বলেছো। আচ্ছা, ভাবো
তো যদি আমি কোনো স্ট্রিং নিই, এবং সেটা উল্টিয়ে দেখতে চাই যে, সেটি প্যালিনড্রোম কিনা
কীভাবে এটা জাভাস্ক্রিপ্ট দিয়ে করা যায়? তারপর মাহা কোড লিখতে শুরু করল। সে একটি সাধারণ
ফাংশন তৈরি করল, যেখানে একটি স্ট্রিং ইনপুট হিসেবে নেওয়া হবে এবং সেই স্ট্রিংটি প্যালিনড্রোম
কিনা তা যাচাই করা হবে।
কোডটি ছিল এমন:
function isPalindrome(str) {
// স্ট্রিংকে ছোট হাতের অক্ষরে পরিণত করা
const cleanStr = str.toLowerCase().replace(/[^a-z0-9]/g, "");
// স্ট্রিং উল্টানো
const reversedStr = cleanStr.split("").reverse().join("");
// উল্টানো স্ট্রিংটি মূল স্ট্রিংয়ের সমান কিনা যাচাই
return cleanStr === reversedStr;
}
হাবিব অবাক হয়ে বলল, এটা কীভাবে কাজ করে?
মাহা হাসি দিয়ে হাবিবেকে বোঝাতে শুরু করল:
১. প্রথমে আমি str.toLowerCase() ব্যবহার করে
পুরো স্ট্রিংটিকে ছোট হাতের অক্ষরে পরিণত করেছি, যাতে কেসের কারণে কোনো ঝামেলা না হয়।
২. এরপর আমি replace(/[^a-z0-9]/g, '') ব্যবহার
করে সব অক্ষর এবং সংখ্যা ছাড়া অন্যসব চিহ্ন বাদ দিয়েছি, যেমন ফাঁকা জায়গা বা যেকোনো
যতি ও বিরামচিহ্ন।
৩. তারপর split('') দিয়ে স্ট্রিংকে একটা অ্যারেতে
ভেঙেছি, reverse() দিয়ে অ্যারেটিকে উল্টেছি, এবং join('') দিয়ে আবার সেটাকে স্ট্রিং
বানিয়েছি।
৪. সবশেষে আমি উল্টানো স্ট্রিং এবং মূল স্ট্রিং
মিলিয়ে দেখেছি। যদি দুইটা একই হয়, তাহলে স্ট্রিংটি প্যালিনড্রোম।
হাবিব মাথা নাড়িয়ে বলল, অবশ্যই! এটা তো খুবই
সহজ! মাহা মুচকি হেসে বলল, তুমি যদি পরীক্ষা করতে চাও, তো চলো দেখি কোন স্ট্রিং প্যালিনড্রোম
কিনা।
হাবিব আরও কিছু উদাহরণ দিল:
console.log(isPalindrome("A man, a plan, a canal, Panama")); // true
console.log(isPalindrome("racecar")); // true
console.log(isPalindrome("hello")); // false
হাবিব ও মাহা দুজনেই খুশি, কারণ তারা বুঝতে
পেরেছে কীভাবে স্ট্রিং প্যালিনড্রোম কিনা তা জাভাস্ক্রিপ্ট দিয়ে যাচাই করা যায়। এখন
তারা আবার কফির কাপে চুমুক দিতে শুরু করল এবং নতুন কোনো প্রজেক্টের জন্য ভাবতে থাকল।
Happy Coding!