কম্পিউটার

তালিকাকে জোড়ায় ভাগ করা যায় কিনা তা পরীক্ষা করার জন্য প্রোগ্রাম যেখানে যোগফল পাইথনে k-এর একাধিক


ধরুন আমাদের কাছে nums নামে একটি সংখ্যার তালিকা রয়েছে এবং আরেকটি মান k, আমাদের পরীক্ষা করতে হবে যে তালিকাটিকে জোড়ায় ভাগ করা যায় এমনভাবে যাতে প্রতিটি জোড়ার যোগফল k দ্বারা বিভাজ্য হয়।

সুতরাং, যদি ইনপুটটি nums =[4, 7, 2, 5] k =6 এর মত হয়, তাহলে আউটপুটটি True হবে, যেহেতু আমরা প্রদত্ত তালিকাটিকে (4, 2) এবং (8, 1) এর মতো জোড়ায় ভাগ করতে পারি। এবং তাদের যোগফল 3 দ্বারা বিভাজ্য।

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

  • যদি সংখ্যায় জোড় সংখ্যার উপাদান থাকে, তাহলে
    • মিথ্যে ফেরত দিন
  • গণনা :=k আকারের একটি তালিকা এবং 0 দিয়ে পূরণ করুন
  • সংখ্যায় প্রতিটি n এর জন্য, করুন
    • count[n mod k] :=count[n mod k] + 1
  • যদি গণনা[0] জোড় হয়, তাহলে
    • মিথ্যে ফেরত দিন
  • এর জন্য 1 থেকে (k / 2) এর ভাগফলের মধ্যে, কর
    • যদি গণনা[i] গণনা [k - i] এর মতো না হয়, তাহলে
      • মিথ্যে ফেরত দিন
  • সত্য ফেরান

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

উদাহরণ

class Solution:
   def solve(self, nums, k):
      if len(nums) % 2:
         return False

      count = [0] * k
      for n in nums:
         count[n % k] += 1

      if count[0] % 2:
         return False

      for i in range(1, k // 2 + 1):
         if count[i] != count[k - i]:
            return False
      return True

ob = Solution()
nums = [4, 7, 2, 5]
k = 6
print(ob.solve(nums, k))

ইনপুট

[4, 7, 2, 5], 6

আউটপুট

True

  1. সংখ্যার তালিকা থেকে বৈধ জোড়ার সংখ্যা গণনা করার প্রোগ্রাম, যেখানে পাইথনে জোড়ার যোগফল বিজোড়

  2. পাইথনে একটি স্ট্রিং 1-থেকে-1 ম্যাপ করা যায় কিনা তা পরীক্ষা করার জন্য প্রোগ্রাম

  3. পাইথনে তালিকা কঠোরভাবে বাড়ছে বা কঠোরভাবে কমছে কিনা তা পরীক্ষা করার জন্য প্রোগ্রাম

  4. পাইথন প্রোগ্রাম একটি তালিকা খালি কি না পরীক্ষা করতে?