কম্পিউটার

প্রথম খেলোয়াড় পাইথনে অন্যের চেয়ে বেশি ক্যান্ডি নিতে পারে কিনা তা পরীক্ষা করার জন্য প্রোগ্রাম


ধরুন আমাদের কাছে ক্যান্ডি নামক সংখ্যার একটি তালিকা আছে এবং দুই ব্যক্তি সর্বাধিক সংখ্যক ক্যান্ডি সংগ্রহ করার জন্য দৌড়াচ্ছেন। এখানে রেস টার্ন ভিত্তিক, ব্যক্তি 1 প্রথমে শুরু করছে, এবং প্রতিটি পাল্লায় সে সামনে বা পেছন থেকে ক্যান্ডি তুলতে পারে। আমাদের পরীক্ষা করতে হবে যে ব্যক্তি 1 অন্যদের চেয়ে বেশি ক্যান্ডি সংগ্রহ করতে পারে কি না৷

সুতরাং, যদি ইনপুটটি ক্যান্ডির মত হয় =[1, 4, 3, 8], তাহলে আউটপুট হবে True, যেহেতু ব্যক্তি 1 প্রথম রাউন্ডে 8টি ক্যান্ডি নিতে পারে এবং দ্বিতীয় ব্যক্তি 1 বা 3, ব্যক্তি 1 বাছাই করুক না কেন। যে কোনো অবশিষ্ট ক্যান্ডি গ্রহণ করে জিততে পারেন।

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

  • N :=ক্যান্ডির আকার

  • একটি ফাংশন পার্থক্য () সংজ্ঞায়িত করুন। এটি বাম, ডানে নিয়ে যাবে

  • যদি বাম ডানের মত হয়, তাহলে

    • ক্যান্ডি ফেরত [বাম]

  • সর্বোচ্চ (ক্যান্ডি [বাম] − পার্থক্য (বাম + 1, ডান)) এবং (ক্যান্ডি [ডান] − পার্থক্য (বাম, ডান −1))

  • প্রধান পদ্ধতি থেকে নিম্নলিখিতগুলি করুন -

  • পার্থক্য (0, N − 1)> 0 হলে সত্য ফেরত দিন, অন্যথায় মিথ্যা

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

উদাহরণ

class Solution:
   def solve(self, candies):
      N = len(candies)
      def difference(left, right):
         nonlocal candies
         if left == right:
            return candies[left]
         return max(candies[left] − difference(left + 1, right), candies[right] − difference(left, right − 1))
      return difference(0, N − 1) > 0
ob = Solution()
candies = [1, 4, 3, 8]
print(ob.solve(candies))

ইনপুট

[1, 4, 3, 8]

আউটপুট

True

  1. পাইথনে নোড অদলবদল করে দুটি গাছ তৈরি করা যায় কিনা তা পরীক্ষা করার জন্য প্রোগ্রাম

  2. পাইথনে একটি গাছ অন্য গাছের সাবট্রি কি না তা পরীক্ষা করার জন্য প্রোগ্রাম

  3. আমরা পাইথনে সমস্ত কোর্স করতে পারি কি না তা পরীক্ষা করার জন্য প্রোগ্রাম

  4. প্রদত্ত গ্রাফটি পাইথনে দ্বিপক্ষীয় কি না তা পরীক্ষা করার জন্য প্রোগ্রাম