কম্পিউটার

পাইথনে একই ধারাবাহিক পার্থক্য সহ সংখ্যাগুলি খুঁজে বের করার প্রোগ্রাম


ধরুন আমাদেরকে N আকারের একটি বিন্যাস খুঁজে বের করতে হবে যাতে প্রতি দুটি পরপর সংখ্যার মধ্যে পরম পার্থক্য হল K। উত্তরের প্রতিটি সংখ্যার শূন্য সংখ্যা ব্যতীত অগ্রণী শূন্য থাকতে হবে না।

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

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

  • যদি N 1 এর মত হয়, তাহলে

    • রেঞ্জ 0 থেকে 9

      থেকে একটি নতুন তালিকা ফেরত দিন
  • সারি :=1 থেকে 9 পর্যন্ত সমস্ত উপাদানের সাথে একটি সারি তৈরি করুন

  • 0 থেকে N - 2 পরিসরে n-এর জন্য, করুন

    • len_queue :=সারির আকার

    • j-এর জন্য 0 থেকে len_queue - 1, করুন

      • num :=সারির বাম আইটেম, এবং সারি থেকে মুছে ফেলুন

      • lsd :=num mod 10

      • যদি lsd - K>=0 হয়, তাহলে

        • সারির শেষে num * 10 + lsd - K সন্নিবেশ করুন

      • যদি K এবং lsd + K <=9, তাহলে

        • সারির শেষে num * 10 + lsd + K লিখুন

  • সারির উপাদান রিটার্ন করুন

উদাহরণ

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

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. পাইথন ব্যবহার করে একই লেবেল সহ সাব-ট্রিতে নোডের সংখ্যা খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে n এর মতো একই সংখ্যক সেট বিট সহ উচ্চতর সংখ্যা খুঁজতে প্রোগ্রাম?

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

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