কম্পিউটার

পাইথনে রোয়ার ব্রেকিং গেমের বিজয়ী খুঁজে বের করার প্রোগ্রাম


ধরুন আমাদের একটি অ্যারের উচ্চতা আছে। বিভিন্ন উচ্চতা সহ বিভিন্ন টাওয়ার আছে। অমল আর বিমল একটা খেলা খেলছে। খেলার নিয়ম নিচের মত

  • অমল সবসময় প্রথম খেলে

  • প্রতিটি মুভের সময়, বর্তমান প্লেয়ার X উচ্চতার একটি টাওয়ার নির্বাচন করে এবং একে একে একে ভেঙ্গে দেয় Y উচ্চতা Z এর প্রতিটি টাওয়ারে। [Y*Z =X; X এবং Y> 1]

  • যার কোন নড়াচড়া নেই সে গেমটি হারাবে

আমাদের বিজয়ীর নাম খুঁজে বের করতে হবে।

সুতরাং, যদি ইনপুটটি উচ্চতা =[3,1,2] এর মত হয়, তাহলে আউটপুট হবে বিমল, কারণ প্রাথমিক উচ্চতা হল {3,1,2}। যদি অমল টাওয়ার 2 থেকে উচ্চতা 1 এর দুটি টাওয়ারের উচ্চতা ভেঙ্গে দেয়, তাহলে নতুন উচ্চতা অ্যারে হবে {3,1,1,1}, বিমল উচ্চতা 3 দিয়ে টাওয়ার ভেঙে 1 উচ্চতার তিনটি টাওয়ার তৈরি করতে পারে, তাই অমলের নেই সরান তাই বিমল জিতেছে।

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

  • একটি ফাংশন util() সংজ্ঞায়িত করুন। এটি সীমা নেবে, প্রাথমিক সীমা মান হল 10^3+5
  • ফলাফল :=আকার সীমার একটি অ্যারে এবং 0 দিয়ে পূরণ করুন
  • আমি পরিসীমা 2 থেকে সীমা - 1 এর জন্য, কর
    • s :=একটি নতুন সেট
    • 1 থেকে i এর বর্গমূলের তলা পর্যন্ত j-এর জন্য, করুন
      • d :=i/j এর ভাগফল, r :=i/j এর অবশিষ্টাংশ
      • যদি r 0 এর সমান হয়, তাহলে
        • যদি j বিজোড় হয়, তাহলে
          • ফলাফল [d]) s-তে ঢোকান
        • যদি d বিজোড় হয়, তাহলে
          • s-এ ফলাফল [j] ঢোকান
    • j :=0
    • যখন s তে j থাকে, do
      • j :=j + 1
      • ফলাফল[i] :=j
  • ফলাফল
  • g :=util()
  • প্রধান পদ্ধতি থেকে, নিম্নলিখিতগুলি করুন -
  • r :=0
  • প্রতিটি i উচ্চতার জন্য, করুন
    • r :=r XOR g[i]
  • যদি r অ-শূন্য হয়, তাহলে
    • প্রত্যাবর্তন "আমল"
  • অন্যথায়,
    • রিটার্ন "বিমল"

উদাহরণ

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

def util(limit=10**3+5):
   result = [0] * limit

   for i in range(2, limit):
      s = set()
      for j in range(1, int(i**0.5)+1):
         d, r = divmod(i, j)

         if r == 0:
            if j & 1:
               s.add(result[d])
            if d & 1:
               s.add(result[j])

      j = 0
      while j in s: j += 1
      result[i] = j

   return result

g = util()

def solve(height):
   r = 0

   for i in height:
      r ^= g[i]

   if r:
      return "Amal"
   else:
      return "Bimal"

height = [3,1,2]
print(solve(height))

ইনপুট

[3,1,2]

আউটপুট

Bimal

  1. পাইথনে বহুভুজের এলাকা খুঁজে বের করার জন্য প্রোগ্রাম

  2. পাইথনে বহুভুজের পরিধি খুঁজে বের করার প্রোগ্রাম

  3. পাইথনে সর্বোচ্চ বিল্ডিং উচ্চতা খুঁজে বের করার প্রোগ্রাম

  4. পাইথন ব্যবহার করে একটি অ্যারে গেমের বিজয়ী খুঁজে বের করার প্রোগ্রাম