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

পাইথনে একই लगাতার পার্থক্য वाली সংখ্যাগুলো খুঁজে বের করার প্রোগ্রাম


আমাদের আকার N এর একটি অ্যারে খুঁজে বের করতে হবে যাতে প্রতিটি দুটি কনsekutিভ ডিজিটের পরম পার্থক্য K হয়। উত্তরতले প্রতিটি সংখ্যাতে লিডিং জিরো থাকতে পারবে না 0 সংখ্যাটি বাদে।

উদাহরণস্বরূপ, ইনপুট N = 4, K = 7 হলে আউটপুট হবে [1818, 2929, 7070, 8181, 9292], এখানে 0707 বৈধ নয় কারণ এর লিডিং জিরো রয়েছে।

সমাধানের ধাপসমূহ

  • যদি N == 1 হয়, তবে:

    • 0 থেকে 9 পর্যন্ত রেঞ্জ থেকে একটি নতুন লিস্ট রিটার্ন করুন

  • queue := 1 থেকে 9 পর্যন্ত সব উপাদান নিয়ে একটি কিউ তৈরি করুন

  • n = 0 থেকে N - 2 পর্যন্ত লুপ চালান:

    • len_queue := queue-এর আকার

    • j = 0 থেকে len_queue - 1 পর্যন্ত লুপ চালান:

      • num := queue-এর বাম পাশের আইটেম, এবং queue-এ থেকে মুছে দিন

      • lsd := num % 10

      • যদি lsd - K >= 0 হয়, তবে:

        • num * 10 + lsd - K-কে queue-এর শেষে যোগ করুন

      • যদি K != 0 এবং lsd + K <= 9 হয়, তবে:

        • num * 10 + lsd + K-কে queue-এর শেষে যোগ করুন

  • queue-এর উপাদানগুলো রিটার্ন করুন

উদাহরণ

নিচের ইমপ্লিমেন্টেশনটি দেখুন ভালোভাবে বুঝার জন্য:

from collections import deque
def solve(N, K):
    if N == 1:
        return list(range(10))
    queue = deque(list(range(1, 10)))
    for n in range(N - 1):
        len_queue = len(queue)
        for j in range(len_queue):
            num = queue.popleft()
            lsd = num % 10
            if lsd - K >= 0:
                queue.append(num * 10 + lsd - K)
            if K and lsd + K <= 9:
                queue.append(num * 10 + lsd + K)
    return list(queue)

N = 4
K = 7
print(solve(N, K))

ইনপুট

4, 7

আউটপুট

[1818, 2929, 7070, 8181, 9292]
  1. Python দিয়ে একই লেবেল ওয়ালা সাব-ট্রি নোড সংখ্যা বের করার প্রোগ্রাম

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

  3. পাইথনে একই ক্যারেক্টার ধারণকারী সাবস্ট্রিংর সর্বোচ্চ দৈর্ঘ্য খুঁজে বের করার প্রোগ্রাম

  4. পাইথনে তিনটি সংখ্যার মধ্যে সর্বোচ্চ মান বের করা