ধরুন আমাদের তিনটি ধনাত্মক সংখ্যা আছে n, নিম্ন এবং উপরের। আমাদের এমন একটি তালিকা খুঁজে বের করতে হবে যার দৈর্ঘ্য n এবং এটি কঠোরভাবে বৃদ্ধি পাচ্ছে এবং তারপর কঠোরভাবে কমছে এবং সমস্ত সংখ্যা সীমার মধ্যে রয়েছে [নিম্ন এবং উপরের] (উভয়ই অন্তর্ভুক্ত)। এবং প্রতিটি ক্রমবর্ধমান এবং হ্রাসকারী অংশগুলি খালি হওয়া উচিত। আমাদের আভিধানিকভাবে সবচেয়ে বড় সম্ভাব্য তালিকা খুঁজে বের করতে হবে, যদি এটি সম্ভব না হয়, তাহলে খালি তালিকা ফিরিয়ে দিন।
সুতরাং, যদি ইনপুটটি n =5 নিম্ন =3 উপরের =7 এর মত হয়, তবে আউটপুট হবে [6, 7, 6, 5, 4], যদি আমরা ঘনিষ্ঠভাবে দেখি, তাহলে [7, 6, 5, 4, 3] ] বৈধ নয় কারণ কঠোরভাবে বর্ধিত অংশটি খালি হওয়া উচিত নয়৷
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
যদি n> 2 * (উপরের - নীচের) + 1 হয়, তাহলে
-
খালি তালিকা ফেরত দিন
-
-
c :=উপরের - নীচে
-
d :=1
-
যদি c
-
d :=n - c - 1
-
-
যদি d 0 এর সমান হয়, তাহলে
-
d :=1
-
-
f :=(ঊর্ধ্ব - d) থেকে (ঊর্ধ্ব - 1) পর্যন্ত একটি নতুন তালিকা
-
g :=ব্যাপ্তি (উর্ধ্ব - n + d - 1) থেকে নীচের দিকে একটি নতুন তালিকা
-
f এবং g সংযুক্ত করুন এবং ফেরত দিন
উদাহরণ
আসুন আরও ভালভাবে বোঝার জন্য নিম্নলিখিত বাস্তবায়ন দেখি
def solve(n, lower, upper): if n > 2 * (upper - lower) + 1: return [] c = upper - lower d = 1 if c < n: d = n - c - 1 if d == 0: d = 1 f = list(range(upper - d, upper)) g = list(range(upper, upper - n + d, -1)) return f + g n = 5 lower = 3 upper = 7 print(solve(n, lower, upper))
ইনপুট
5, 3, 7
আউটপুট
[6, 7, 6, 5, 4]