কম্পিউটার

পাইথনে স্টার্টার দ্বারা জেতার জন্য গেমটি শুরু করার সম্ভাব্য চালের সংখ্যা খুঁজে বের করার প্রোগ্রাম


ধরুন অমল আর বিমল একটা খেলা খেলছে। তাদের ভিতরে এক বা একাধিক চকলেট সহ n পাত্র রয়েছে। এই পাত্রে 1 থেকে N পর্যন্ত সংখ্যা করা হয়, যেখানে ith পাত্রে চকলেটের সংখ্যা [i] রয়েছে। এখন খেলার মত। প্রথম খেলোয়াড় একটি পাত্র নির্বাচন করবে এবং এটি থেকে এক বা একাধিক চকলেট নেবে। তারপর দ্বিতীয় প্লেয়ার একটি অ-খালি পাত্র নির্বাচন করবে এবং এটি থেকে এক বা একাধিক চকলেট নেবে, এভাবে তারা বিকল্পভাবে খেলবে। যখন একজন খেলোয়াড়ের কোন চকলেট নেওয়ার উপায় থাকে না, তখন সে খেলাটি হারায়। যদি অমলের পালা প্রথম হয় তাহলে আমাদের খুঁজে বের করতে হবে কত উপায়ে অমল প্রথম পদক্ষেপ নিতে পারে, যাতে সে সবসময় জিতে যায়।

সুতরাং, ইনপুট যদি গণনা =[2, 3] এর মতো হয়, তবে আউটপুট হবে 1, কারণ প্রাথমিকভাবে কন্টেইনারগুলি [2, 3] এর মতো। তারা এভাবে খেলতে পারে

  • অমল দ্বিতীয় পাত্র থেকে একটি চকলেট বাছাই করে, তাই বর্তমানে [2, 2]
  • বিমল প্রথম পাত্র থেকে একটি চকলেট বাছাই করে, তাই বর্তমানে [1, 2]
  • অমল দ্বিতীয় পাত্র থেকে একটি চকলেট বাছাই করে, তাই বর্তমানে [1, 1]
  • বিমল প্রথম পাত্র থেকে একটি চকলেট বাছাই করে, তাই বর্তমানে [0, 1]

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

  • tmp :=0
  • গণনার প্রতিটি c-এর জন্য, করুন
    • tmp :=tmp XOR c
  • যদি tmp শূন্য হয়, তাহলে
    • রিটার্ন 0
  • অন্যথায়,
    • চলবে :=0
    • গণনার প্রতিটি c-এর জন্য, করুন
      • চলবে :=চলে + (1 যখন (tmp XOR c)
    • রিটার্ন চালগুলি

উদাহরণ

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

def solve(count):
   tmp = 0
   for c in count:
      tmp ^= c

   if not tmp:
      return 0
   else:
      moves = 0
      for c in count:
         moves += (tmp^c) < c
      return moves

count = [2, 3]
print(solve(count))

ইনপুট

[2, 3]

আউটপুট

1

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

  2. পাইথনে ম্যাট্রিক্সের এক কক্ষ থেকে অন্য কোষে যাওয়ার জন্য ন্যূনতম সংখ্যক চাল খুঁজে বের করুন

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

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