কম্পিউটার

পাইথনে কতগুলি প্রশ্ন বৈধ গাণিতিক ক্রম খুঁজে পায় তা পরীক্ষা করার জন্য প্রোগ্রাম


ধরুন আমাদের কাছে nums নামে একটি সংখ্যার তালিকা রয়েছে এবং আমাদের কাছে প্রশ্নের তালিকাও রয়েছে। যেখানে প্রতিটি প্রশ্নের উপাদান রয়েছে [i, j]। সুতরাং এই প্রশ্নটি জিজ্ঞাসা করছে যে [i, j] (উভয়ই অন্তর্ভুক্ত) থেকে সংখ্যার সাবলিস্টটি একটি গাণিতিক ক্রম বা না। তাই পরিশেষে আমাদের খুঁজে বের করতে হবে এমন প্রশ্নের সংখ্যা যা সত্য ফিরে আসে।

সুতরাং, যদি ইনপুটটি সংখ্যার মত হয় =[2, 4, 6, 8, 7, 6, 5, 2] প্রশ্ন =[[3, 4],[0, 3],[2, 4]], তাহলে আউটপুট হবে 2, কারণ [2, 4, 6, 8] একটি গাণিতিক ক্রম, তাই ক্যোয়ারী [0, 3] সত্য। এবং [8, 7] এর জন্যও একটি গাণিতিক ক্রম, তাই প্রশ্ন [3, 4]ও সত্য। কিন্তু [6, 8, 7] একটি গাণিতিক ক্রম নয়, তাই [2, 4] সত্য নয়।

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

  • সংখ্যা খালি হলে, তারপর
    • রিটার্ন 0
  • n :=সংখ্যার আকার
  • diff :=0 থেকে n - 2 রেঞ্জের প্রতিটি i এর জন্য উপাদান সহ একটি তালিকা (সংখ্যা[i + 1] - সংখ্যা[i])
  • rle :=আকারের একটি তালিকা (n - 1) এবং 0 দিয়ে পূরণ করুন
  • আমি 0 থেকে n - 2 রেঞ্জের জন্য, কর
    • যদি i> 0 এবং diff[i] diff[i - 1] এর মত হয়, তাহলে
      • rle[i] :=rle[i - 1] + 1
    • অন্যথায়,
      • rle[i] :=1
  • উত্তর :=0
  • প্রত্যেকটি (i, j) প্রশ্নের জন্য, করুন
    • যদি i j এর মত হয়, তাহলে
      • উত্তর :=উত্তর + ১
    • অন্যথায়,
      • উত্তর :=উত্তর + (1 যদি rle[j - 1]>=(j - i), অন্যথায় 0)
  • উত্তর ফেরত দিন

উদাহরণ

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

def solve(nums, queries):
   if not nums:
      return 0

   n = len(nums)
   diff = [nums[i + 1] - nums[i] for i in range(n - 1)]

   rle = [0] * (n - 1)
   for i in range(n - 1):
      if i > 0 and diff[i] == diff[i - 1]:
         rle[i] = rle[i - 1] + 1
      else:
         rle[i] = 1

   ans = 0
   for i, j in queries:
      if i == j:
         ans += 1
      else:
         ans += rle[j - 1] >= (j - i)
   return ans

nums = [2, 4, 6, 8, 7, 6, 5, 2]
queries = [[3, 4],[0, 3],[2, 4]]
print(solve(nums, queries))

ইনপুট

[2, 4, 6, 8, 7, 6, 5, 2], [[3, 4],[0, 3],[2, 4]]

আউটপুট

2

  1. পাইথন প্রোগ্রাম কিভাবে চালাবেন?

  2. আমরা পাইথনে একটি ম্যাট্রিক্সের খালি কোষ কতগুলি উপায়ে বেছে নিতে পারি তা পরীক্ষা করার জন্য প্রোগ্রাম

  3. পাইথন প্রোগ্রামে প্রদত্ত নম্বরটি ফিবোনাচি নম্বর কিনা তা কীভাবে পরীক্ষা করবেন?

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