কম্পিউটার টিউটোরিয়াল

পাইথনে নির্দিষ্ট রেঞ্জ থেকে ক্রমাগত বৃদ্ধিমান সংখ্যা বের করার প্রোগ্রাম

দুটি সংখ্যা start এবং end দেওয়া আছে। [start, end] রেঞ্জের মধ্যে এমন সব সংখ্যা বের করতে হবে যাদের ডিজিটগুলো ক্রমাগত বৃদ্ধিমান (যেমন ৫৬৭৮, কিন্তু ১৬৯ নয়)। ফলাফল সাজানো তালিকা হিসেবে রিটার্ন করুন।

সমস্যা উদাহরণ

ইনপুট: start = 10, end = 150
আউটপুট: [12, 23, 34, 45, 56, 67, 78, 89, 123]

সমাধানের পদ্ধতি (স্ট্রিং স্লাইসিং)

  1. s = "123456789" (সব সম্ভাব্য ক্রমাগত ডিজিট)
  2. a = [] খালি তালিকা
  3. প্রতিটি i (০ থেকে ৮) এবং j (i+1 থেকে ৯) এর জন্য:
    • x = int(s[i:j]) (সাবস্ট্রিংকে সংখ্যায় রূপান্তর)
    • যদি start <= x <= end হলে a-তে যোগ করুন
  4. 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]

ব্যাখ্যা: শুধু ১-৯ ডিজিট ব্যবহার করে ৩৬টি সম্ভাব্য ক্রমাগত বৃদ্ধিমান সংখ্যা তৈরি করা যায় (১২, ১২৩, ..., ১২৩৪৫৬৭৮৯, ২৩, ২৩৪, ..., ৮৯)। রেঞ্জ অনুযায়ী ফিল্টার করা হয়।

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

  2. পাইথনে ১ থেকে N পর্যন্ত অনুপস্থিত সংখ্যাগুলো খুঁজে বের করার প্রোগ্রাম

  3. পাইথন প্রোগ্রাম একটি ইন্টারভালের সব প্রাইম নম্বর প্রিন্ট করা

  4. পাইথন প্রোগ্রাম: দেওয়া সংখ্যা পর্যন্ত ৩ এবং ৫ দ্বারা বিভাজ্য সব সংখ্যা প্রিন্ট করা