কম্পিউটার

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


ধরুন আমাদের n সারি এবং m কলাম সহ একটি গ্রিড আছে। অমল আর বিমল সেই গ্রিডে একটা খেলা খেলছে। খেলার নিয়ম নিচের মত -

অমল উপরের সারিতে কোথাও সাদা পদ্মের টালি রাখে এবং বিমল নীচের সারিতে কোথাও একটি শুঁয়োপোকা টালি রাখে। অমল খেলা শুরু করে এবং তারা বিকল্পভাবে খেলছে। অমল তার টাইলকে বর্তমান কক্ষের গ্রিডের ভিতরে অবস্থিত 8টি সংলগ্ন কক্ষের যে কোন একটিতে স্থানান্তর করতে পারে, কিন্তু বিমলের শুঁয়োপোকা টাইল শুধুমাত্র গ্রিডের ভিতরে বাম বা ডানে যেতে পারে, অথবা একই অবস্থানে থাকতে পারে। অমলের লক্ষ্য যতটা সম্ভব কম চাল ব্যবহার করে বিমলকে ধরা, অন্যদিকে বিমলকে (শুঁয়োপোকা টালি দিয়ে) যতদিন সম্ভব বেঁচে থাকতে হবে। যদি তারা তাদের পদ্ম এবং শুঁয়োপোকা রাখার জন্য এলোমেলোভাবে দুটি কলাম নির্বাচন করে, তাহলে আমাদের এই গেমটি জয়ের জন্য অমলের প্রত্যাশিত সংখ্যক চাল খুঁজে বের করতে হবে।

সুতরাং, যদি ইনপুট n =5 m =7 এর মত হয়, তাহলে আউটপুট হবে 4.571428571428571।

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

  • r :=0
  • 0 থেকে m - 1 এর মধ্যে l এর জন্য
  • করুন
    • তাপ :=n - 1.0
    • যদি l>=n, তাহলে
      • temp :=temp + (l - n + 1) * ((l - 1) / m)
    • যদি l
    • temp :=temp + (m - n - l) * ((m - l - 2) / m)
  • r :=r + temp / m
  • রিটার্ন r
  • উদাহরণ

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

    def solve(n, m):
       r = 0
    
       for l in range(m):
          temp = n - 1.0
          if l >= n:
             temp += (l - n + 1) * ((l - 1) / m)
          if l < m - n:
             temp += (m - n - l) * ((m - l - 2) / m)
          r += temp / m
    
       return r
    
    n = 5
    m = 7
    print(solve(n, m))

    ইনপুট

    5, 7
    

    আউটপুট

    4.571428571428571

    1. পাইথনে লক্ষ্যে পৌঁছানোর জন্য প্রয়োজনীয় প্রদত্ত অপারেশনের সংখ্যা খুঁজে বের করার প্রোগ্রাম

    2. পাইথনে পুনরাবৃত্ত পূর্ণসংখ্যা গেম মুছে জয়ের জন্য চালের সংখ্যা খুঁজে বের করার প্রোগ্রাম

    3. স্ট্রিংয়ের সংখ্যা খুঁজে বের করার জন্য প্রোগ্রাম আমরা তৈরি করতে পারি যেখানে 'a' 'a' বা 'b' হতে পারে এবং 'b' পাইথনে 'b' থাকে

    4. পাইথনে এক নম্বর থেকে অন্য নম্বর তৈরি করার জন্য প্রয়োজনীয় ন্যূনতম সংখ্যক অপারেশন খুঁজে বের করার প্রোগ্রাম