কম্পিউটার

সাব্যারে চেক করার প্রোগ্রামটি পাটিগণিত ক্রম থেকে পুনর্বিন্যাস করা যেতে পারে বা পাইথনে নয়


ধরুন আমাদের কাছে সংখ্যার ক্রম রয়েছে এবং m আকারের আরও দুটি অ্যারে l এবং r আছে, এই l এবং rগুলি [l[i], r[i]] এর মতো পরিসরের প্রশ্নগুলিকে উপস্থাপন করছে। আমাদের একটি বুলিয়ান সিকোয়েন্স উত্তর খুঁজে বের করতে হবে, যেখানে ans[i] সত্য হয় যখন সাবয়ারের সংখ্যা[l[i]], nums[l[i] + 1], ... nums[r[i] - 1], nums[r[i]] একটি গাণিতিক ক্রম তৈরি করার জন্য সাজানো যেতে পারে, অন্যথায় মিথ্যা।

একটি ক্রমকে পাটিগণিত বলা হয়, যদি এটি কমপক্ষে দুটি উপাদান নিয়ে গঠিত এবং প্রতিটি দুটি পরপর উপাদানের মধ্যে পার্থক্য একই। উদাহরণস্বরূপ, কিছু পাটিগণিত ক্রম হল:[2, 4, 6, 8, 10], [5, 5, 5, 5], [4, -2, -8, -14], কিন্তু নয় [2, 2, 3, 6, 9]।

সুতরাং, ইনপুট যদি nums =[6,8,7,11,5,9], l =[0,0,2], r =[2,3,5] এর মত হয়, তাহলে আউটপুট হবে [True] , মিথ্যা, সত্য] কারণ −

  • প্রশ্নের জন্য [0, 2], ক্রম হল [6,8,7], এটি [6,7,8] হিসাবে পুনর্বিন্যাস করা যেতে পারে, এটি বৈধ

  • প্রশ্নের জন্য [0, 3], ক্রম হল [6,8,7,11], গাণিতিক ক্রমানুসারে পুনর্বিন্যাস করা যাবে না

  • প্রশ্নের জন্য [2, 5], ক্রম হল [7,11,5,9], [5,7,9,11] হিসাবে পুনর্বিন্যাস করা যেতে পারে, এটি বৈধ

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

  • new :=l এর মতো আকারের একটি তালিকা এবং সমস্ত সত্য মান দিয়ে পূরণ করুন

  • আমি 0 থেকে l - 1 এর আকারের মধ্যে, কর

    • ডেটা :=সূচক l[i] থেকে r[i]

      পর্যন্ত সংখ্যার সাবলিস্ট
    • তালিকার ডেটা সাজান

    • d :=একটি নতুন তালিকা

    • j-এর জন্য রেঞ্জ 0 থেকে ডেটার আকার - 2, করুন

      • d

        এর শেষে ডেটা[j+1] - ডেটা[j] সন্নিবেশ করান
    • d :=d

      থেকে একটি নতুন সেট থেকে একটি নতুন তালিকা
    • যদি d এর আকার 1 এর মত না হয়, তাহলে

      • new[i] :=মিথ্যা

  • নতুন ফেরত দিন

উদাহরণ

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

def solve(nums, l, r):
   new = [True]*len(l)

   for i in range(len(l)):
      data = nums[l[i]:r[i]+1]
      data.sort()

      d = []
      for j in range(len(data) - 1):
         d.append(data[j+1] - data[j])

      d = list(set(d))
      if len(d) != 1:
         new[i] = False
   return new

nums = [6,8,7,11,5,9]
l = [0,0,2]
r = [2,3,5]
print(solve(nums, l, r))

ইনপুট

[6,8,7,11,5,9], [0,0,2], [2,3,5]

আউটপুট

[True,False,True]

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

  2. আমরা পাইথনে প্রদত্ত স্ট্রিং অক্ষর থেকে কে প্যালিনড্রোম তৈরি করতে পারি কিনা তা পরীক্ষা করার জন্য প্রোগ্রাম?

  3. আমরা পাইথনে বাম বা ডানদিকের অবস্থানে পৌঁছাতে পারি কিনা তা পরীক্ষা করার জন্য প্রোগ্রাম

  4. প্রোগ্রাম চেক করার জন্য আমরা যে কোন শহর থেকে যে কোন শহরে যেতে পারি নাকি পাইথনে নেই