কম্পিউটার

পাইথনে সূচক বা স্থানীয় শিখর খোঁজার প্রোগ্রাম


ধরুন আমাদের কাছে সংখ্যার একটি তালিকা আছে যাকে বলা হয় সংখ্যা। আমাদের প্রতিটি শিখর উপাদানের সূচী খুঁজে বের করতে হবে সংখ্যায়, আরোহী ক্রমে সাজানো। একটি শীর্ষ উপাদানের একটি সূচক i যখন এই তিনটি শর্তের সবকটিই সন্তুষ্ট হয়:1. এর ডানদিকের পরবর্তী সংখ্যা যা সংখ্যার চেয়ে আলাদা [i] উপস্থিত নয় বা সংখ্যার থেকে ছোট হতে হবে [i] 2. আগের সংখ্যা এর বাম অংশ যা সংখ্যার থেকে আলাদা [i] উপস্থিত নয় বা সংখ্যার থেকে ছোট হতে হবে [i] 3. এটির বাম পাশে বা ডান পাশে কমপক্ষে একটি সংখ্যা আছে যা সংখ্যা[i] থেকে আলাদা৷

সুতরাং, যদি ইনপুটটি সংখ্যার মত হয় =[5, 8, 8, 8, 6, 11, 11], তাহলে আউটপুট হবে [1, 2, 3, 5, 6], কারণ 8s এর মালভূমি হিসাবে বিবেচিত হয় শিখর [1,2,3]। এবং 11গুলি হল, [5, 6]।

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

  • n :=সংখ্যার আকার
  • উত্তর :=একটি নতুন তালিকা
  • i :=0
  • যখন i
  • i0 :=i
  • যখন i
  • i :=i + 1
  • যদি (i0 হল 0 বা nums[i0]> nums[i0 - 1]) এবং (i হল n বা nums[i0]> nums[i]), তারপর
    • যদি i0 0 না হয় বা i n না হয়, তাহলে
      • উত্তর শেষে একটি (i0 থেকে i-1 তালিকা) সন্নিবেশ করুন
  • উত্তর ফেরত দিন
  • উদাহরণ

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

    def solve(nums):
       n = len(nums)
       ans = []
       i = 0
       while i < n:
          i0 = i
          while i < n and nums[i] == nums[i0]:
             i += 1
          if (i0 == 0 or nums[i0] > nums[i0 - 1]) and (i == n or nums[i0] > nums[i]):
             if i0 != 0 or i != n:
                ans.extend(range(i0, i))
       return ans
    
    nums = [5, 8, 8, 8, 6, 11, 11]
    print(solve(nums))

    ইনপুট

    [5, 8, 8, 8, 6, 11, 11]

    আউটপুট

    [1, 2, 3, 5, 6]

    1. পাইথনে একটি সংখ্যার সুপার ডিজিট খোঁজার প্রোগ্রাম

    2. পাইথন প্রোগ্রাম একটি বড় সংখ্যার ফ্যাক্টরিয়াল খুঁজে বের করতে

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

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