দুটি সংখ্যা start এবং end দেওয়া আছে। [start, end] রেঞ্জের মধ্যে এমন সব সংখ্যা বের করতে হবে যাদের ডিজিটগুলো ক্রমাগত বৃদ্ধিমান (যেমন ৫৬৭৮, কিন্তু ১৬৯ নয়)। ফলাফল সাজানো তালিকা হিসেবে রিটার্ন করুন।
সমস্যা উদাহরণ
ইনপুট: start = 10, end = 150
আউটপুট: [12, 23, 34, 45, 56, 67, 78, 89, 123]
সমাধানের পদ্ধতি (স্ট্রিং স্লাইসিং)
s = "123456789"(সব সম্ভাব্য ক্রমাগত ডিজিট)a = []খালি তালিকা- প্রতিটি i (০ থেকে ৮) এবং j (i+1 থেকে ৯) এর জন্য:
x = int(s[i:j])(সাবস্ট্রিংকে সংখ্যায় রূপান্তর)- যদি
start <= x <= endহলেa-তে যোগ করুন
aসাজিয়ে রিটার্ন করুন
পাইথন কোড
def solve(start, end):
s = "123456789"
a = []
for i in range(9):
for j in range(i + 1, 10):
x = int(s[i:j])
if start <= x <= end:
a += (x,)
return sorted(a)
start = 10
end = 150
print(solve(start, end)) # আউটপুট: [12, 23, 34, 45, 56, 67, 78, 89, 123]
টেস্ট কেস
ইনপুট: 10, 150
আউটপুট: [12, 23, 34, 45, 56, 67, 78, 89, 123]
ব্যাখ্যা: শুধু ১-৯ ডিজিট ব্যবহার করে ৩৬টি সম্ভাব্য ক্রমাগত বৃদ্ধিমান সংখ্যা তৈরি করা যায় (১২, ১২৩, ..., ১২৩৪৫৬৭৮৯, ২৩, ২৩৪, ..., ৮৯)। রেঞ্জ অনুযায়ী ফিল্টার করা হয়।