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


ধরুন আমাদের 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. Android

      কিভাবে কারেন্ট থ্রেড অ্যানড্রয়েড জীবিত বা না পেতে?

    2. Python

      কিভাবে একটি Tkinter Spinbox এ একটি ডিফল্ট স্ট্রিং মান সেট করবেন?

    3. JavaScript

      কিভাবে CSS এবং JavaScript দিয়ে কাস্টম রেঞ্জ স্লাইডার তৈরি করবেন?

    4. Android

      অ্যান্ড্রয়েডে তুলনা স্ট্রিং কীভাবে ব্যবহার করবেন?

  • C প্রোগ্রামিং
  •   
  • C++
  •   
  • Redis
  •   
  • BASH প্রোগ্রামিং
  •   
  • Python
  •   
  • Java
  •   
  • তথ্যশালা
  •   
  • HTML
  •   
  • JavaScript
  •   
  • প্রোগ্রামিং
  •   
  • CSS
  •   
  • Ruby
  •   
  • SQL
  •   
  • IOS
  •   
  • Android
  •   
  • mongodb
  •   
  • MySQL
  •   
  • C#
  •   
  • PHP
  •   
  • SQL সার্ভার