কম্পিউটার

পাইথনে প্রথমে একটি প্যালিনড্রোম স্ট্রিং পেতে অক্ষরগুলিকে পুনর্বিন্যাস করে এমন খেলোয়াড়কে খুঁজুন


ধরুন আমাদের কাছে ছোট হাতের অক্ষর সহ একটি স্ট্রিং S আছে, এখন দুইজন খেলোয়াড় গেম খেলছে। নিয়ম নিম্নরূপ -

  • প্লেয়ার গেমটি জিতবে, যদি, যে কোন পদক্ষেপে, একজন খেলোয়াড় একটি প্যালিনড্রোম স্ট্রিং পেতে স্ট্রিংয়ের অক্ষরগুলিকে এলোমেলো করতে পারে৷

  • খেলোয়াড় জিততে পারে না যখন তাকে স্ট্রিং থেকে কোনো অক্ষর মুছে ফেলতে হয়।

আমাদের মনে রাখতে হবে যে উভয় খেলোয়াড়ই গেমটি সর্বোত্তমভাবে খেলে এবং প্লেয়ার1 গেমটি শুরু করে। আমাদের গেমের বিজয়ী খুঁজে বের করতে হবে।

সুতরাং, যদি ইনপুটটি "pqpppq" এর মতো হয়, তাহলে আউটপুট হবে Player1 কারণ প্লেয়ার-1 প্রথম ধাপে অক্ষরগুলিকে "ppqqpp" পাওয়ার জন্য সাজিয়েছে এবং গেমটি জিতেছে৷

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • l :=অনুক্রমের আকার

  • freq :=26 আকারের একটি তালিকা তৈরি করুন এবং 0 দিয়ে পূর্ণ করুন

  • আমি 0 থেকে l রেঞ্জের জন্য, 1 দ্বারা বাড়ান, করুন

    • অনুক্রমের ফ্রিকোয়েন্সি [i] 1 দ্বারা বৃদ্ধি করুন

    • গণনা :=0

    • আমি 0 থেকে 25 রেঞ্জের জন্য, করুন

      • যদি freq[i] mod 2 0 না হয়, তাহলে

        • গণনা :=গণনা + 1

    • যদি গণনা 0 হয় বা গণনা বিজোড় হয়, তাহলে

      • রিটার্ন 1

    • অন্যথায়,

      • রিটার্ন 2

উদাহরণ

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

def who_is_the_winner(sequence):
   l = len(sequence)
   freq = [0 for i in range(26)]
   for i in range(0, l, 1):
      freq[ord(sequence[i]) - ord('a')] += 1
   count = 0
   for i in range(26):
      if (freq[i] % 2 != 0):
         count += 1
   if (count == 0 or count & 1 == 1):
      return 1
   else:
      return 2
sequence = "pqpppq"
print("Player:", who_is_the_winner(sequence) )

ইনপুট

"pqpppq"

আউটপুট

Player: 1

  1. একটি স্ট্রিং মধ্যে মিরর অক্ষর খুঁজে পেতে পাইথন প্রোগ্রাম

  2. পাইথনে একটি স্ট্রিং প্রথম বার বার শব্দ খুঁজুন?

  3. পাইথনে স্ট্রিংয়ের প্রথম 100টি অক্ষর কীভাবে পাবেন?

  4. কিভাবে পাইথনে একটি স্ট্রিং দৈর্ঘ্য পেতে?