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

Python-এ Lotus এবং Caterpillar গেম জেতার জন্য প্রত্যাশিত মুভ সংখ্যা বের করার প্রোগ্রাম


মান লেট n সারি এবং m কলামের একটি গ্রিড আছে। Amal এবং Bimal সেটা גרিডে একটি গেম খেলছে। গেমের নিয়ম নিচের মতো −

Amal সাদা লোটাস টাইলটি 탑 সারির কোথাও রাখে এবং Bimal ক্যাটারপিলার টাইলটি বটম সারির কোথাও রাখে। Amal গেম শুরু করে এবং তারা বारी-बারিতে খেলে। Amal তার টাইলকে কারেন্ট সেলের ৮টি এডজেসেন্ট সেলের যেকোনোতে মুভ করতে পারে গ্রিডের ভেতরে, কিন্তু Bimal-এর ক্যাটারপিলার টাইল শুধু বাম বা ডান মুভ করতে পারে গ্রিডের ভেতরে, অথবা একই পজিশনে থাকতে পারে। Amal-এর লক্ষ্য Bimal কে কমপক্ষে মুভ দিয়ে ধরা, যখন Bimal (ক্যাটারপিলার টাইলসহ) যতদিন সম্ভব টিকे থাকতে চায়। যদি তারা র‍্যান্ডমলি দুটি কলাম সিলেক্ট করে তাদের লোটাস এবং ক্যাটারপিলার রাখতে, তবে আমাদের Amal এই গেম জেতার জন্য প্রত্যাশিত মুভ সংখ্যা বের করতে হবে।

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

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

  • r := 0
  • l 0 থেকে m - 1 পর্যন্ত রেঞ্জে, করুন
    • temp := n - 1.0
    • যদি l >= n, তবে
      • temp := temp + (l - n + 1) * ((l - 1) / m)
    • যদি l < m - n, তবে
      • 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. পাইথনে স্ট্রার্ট থেকে এন্ড পৌঁছানোর ন্যূনতম অপারেশন (x2 বা -1)

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

  3. পাইথনে 'a' কে 'a' বা 'b' এবং 'b' কে 'b' রেখে বানানো সম্ভাব্য স্ট্রিং সংখ্যা বের করার প্রোগ্রাম

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