আমাদের আকার 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]