প্যালিনড্রোম
প্যালিনড্রোম হলো এমন শব্দ, ফ্রেজ বা সংখ্যা যা পিছন থেকে পড়লেও সামনের মতোই পড়া যায়। উদাহরণ: Malayalam, madam, nurses run ইত্যাদি।
এখানে শুধু অ্যালফানিউমেরিক ক্যারেক্টার অনুমোদন করার জন্য রেগুলার এক্সপ্রেশন ব্যবহার করতে হবে। \W হলো একটি বিল্ট-ইন রেজেক্স যা আমাদের কাজটি সহজ করে দেয়। প্রদত্ত স্ট্রিং প্যালিনড্রোম কিনা চেক করার জন্য কিছু ধাপ মেনে চলতে হবে।
পালন করার ধাপসমূহ
- স্ট্রিং-এর সব ক্যারেক্টারকে লোয়ারকেসে রূপান্তর করুন।
- সব নন-অ্যালফানিউমেরিক ভ্যালু রিমুভ করুন। এটি বিল্ট-ইন রেজেক্স
\Wবা কাস্টম রেজেক্স দিয়ে করা যায়। - নন-অ্যালফানিউমেরিক ভ্যালুগুলোকে খালি স্ট্রিং (
"") দিয়ে রিপ্লেস করুন। এটিreplace() মেথড দিয়ে করা যায়। - পরিশোধিত স্ট্রিং পিছন থেকে সামনে একই পড়া যায় কিনা চেক করুন।
- পরিশোধিত স্ট্রিংকে
string.reverse()মেথড দিয়ে রিভার্স করুন এবং আরিজিনাল স্ট্রিংয়ের সাথে তুলনা করুন। - দুটো সমান হলে আউটপুটে
trueদেখাবে, অন্যথায়false।
উদাহরণ
<html> <body>
<script>
function palindrome(str) {
var reg = /[\W_]/g; // '\W' এর পরিবর্তে "/[^a-zA-Z0-9]+/g" ও ব্যবহার করা যায়
var smstr = str.toLowerCase().replace(reg, "");
var reversed = smstr.split("").reverse().join("");
if (reversed === smstr) {
document.write("true");
} else {
document.write("false");
}
}
palindrome("a929a*/(';-=,.*");
</script>
</body> </html>
আউটপুট
true
ব্যাখ্যা
ইনপুট স্ট্রিং "a929a*/(';-=,.*"-এ নন-অ্যালফানিউমেরিক ক্যারেক্টারগুলো (*/(';-=,.*) রিমুভ করার পর "a929a" থাকে, যা রিভার্স করলেও "a929a" হয়। তাই এটি প্যালিনড্রোম। রেজেক্স /[\W_]/g নন-ওয়ার্ড ক্যারেক্টার এবং আন্ডারস্কোর ম্যাচ করে।