কম্পিউটার টিউটোরিয়াল

জাভাস্ক্রিপ্টে প্যালিনড্রোম প্রোগ্রাম (শুধু অ্যালফানিউমেরিক ভ্যালু অনুমোদন)

প্যালিনড্রোম

প্যালিনড্রোম হলো এমন শব্দ, ফ্রেজ বা সংখ্যা যা পিছন থেকে পড়লেও সামনের মতোই পড়া যায়। উদাহরণ: Malayalam, madam, nurses run ইত্যাদি।

এখানে শুধু অ্যালফানিউমেরিক ক্যারেক্টার অনুমোদন করার জন্য রেগুলার এক্সপ্রেশন ব্যবহার করতে হবে। \W হলো একটি বিল্ট-ইন রেজেক্স যা আমাদের কাজটি সহজ করে দেয়। প্রদত্ত স্ট্রিং প্যালিনড্রোম কিনা চেক করার জন্য কিছু ধাপ মেনে চলতে হবে।

পালন করার ধাপসমূহ

  1. স্ট্রিং-এর সব ক্যারেক্টারকে লোয়ারকেসে রূপান্তর করুন।
  2. সব নন-অ্যালফানিউমেরিক ভ্যালু রিমুভ করুন। এটি বিল্ট-ইন রেজেক্স \W বা কাস্টম রেজেক্স দিয়ে করা যায়।
  3. নন-অ্যালফানিউমেরিক ভ্যালুগুলোকে খালি স্ট্রিং ("") দিয়ে রিপ্লেস করুন। এটি replace() মেথড দিয়ে করা যায়।
  4. পরিশোধিত স্ট্রিং পিছন থেকে সামনে একই পড়া যায় কিনা চেক করুন।
  5. পরিশোধিত স্ট্রিংকে string.reverse() মেথড দিয়ে রিভার্স করুন এবং আরিজিনাল স্ট্রিংয়ের সাথে তুলনা করুন।
  6. দুটো সমান হলে আউটপুটে 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 নন-ওয়ার্ড ক্যারেক্টার এবং আন্ডারস্কোর ম্যাচ করে।

  1. জাভাস্ক্রিপ্টে স্ট্রিং-এ একাধিক স্পেসকে একক স্পেসে রূপান্তর

  2. C-এ প্যালিনড্রোম স্ট্রিং চেক করার প্রোগ্রাম

  3. C++-এ দুই স্ট্রিং বিভক্ত করে প্যালিনড্রোম তৈরি করার প্রোগ্রাম

  4. C# প্রোগ্রাম: একটি স্ট্রিং প্যালিনড্রোম (Palindrome) কিনা যাচাই করা