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

পাইথনে ক্যারেক্টার সাজিয়ে প্যালিনড্রোম বানানোয় প্রথমে বিজয়ী হবেন এমন খেলোয়াড় খুঁজুন


সমস্যা বিবরণ

একটি স্ট্রিং S দেওয়া আছে (লোয়ারকেস)। দুজন খেলোয়াড় খেলছে। নিয়ম:

  • যেকোনো মুভে যদি খেলোয়াড় ক্যারেক্টারগুলো সাজিয়ে প্যালিনড্রোম বানাতে পারে, সে জিতবে।
  • ক্যারেক্টার মুছে দিয়ে জয় করা যাবে না।
দুজনই অপ্টিমালি খেলে এবং প্লেয়ার ১ প্রথমে শুরু করে। বিজয়ী কে হবে তা বের করতে হবে।

উদাহরণস্বরূপ, "pqpppq" হলে আউটপুট Player 1 কারণ প্লেয়ার ১ প্রথম মুভেই "ppqqpp" বানিয়ে জিতে।

সমাধানের ধাপসমূহ

  1. ফ্রিকোয়েন্সি অ্যারে freq[26] বানান।
  2. বিজোড় ফ্রিকোয়েন্সি वाले ক্যারেক্টার সংখ্যা count বের করুন।
  3. যদি count == 0 অথবা count বিজোড় হয়, প্লেয়ার ১ জিতবে (return 1)।
  4. অন্যথায় প্লেয়ার ২ জিতবে (return 2)।

পাইথন কোড উদাহরণ

def who_is_the_winner(sequence):
    l = len(sequence)
    freq = [0] * 26
    for i in range(l):
        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))  # আউটপুট: Player: 1

ইনপুট

"pqpppq"

আউটপুট

Player: 1
  1. পাইথন প্রোগ্রাম: স্ট্রিং-এ মিরর ক্যারেক্টার বের করা

  2. পাইথনে স্ট্রিংয়ের প্রথম পুনরাবৃত্ত শব্দ খুঁজে বের করার প্রোগ্রাম

  3. পাইথনে স্ট্রিংয়ের প্রথম ১০০ ক্যারেক্টার পাওয়ার পদ্ধতি

  4. পাইথনে স্ট্রিং-এর দৈর্ঘ্য পাওয়া