ধরুন আমাদের কাছে পূর্ণসংখ্যার একটি নেস্টেড তালিকা আছে; এটি সমতল করার জন্য আমাদের একটি পুনরাবৃত্তিকারী বাস্তবায়ন করতে হবে। প্রতিটি উপাদান হয় একটি পূর্ণসংখ্যা, বা একটি তালিকা। সেই তালিকার উপাদানগুলিও পূর্ণসংখ্যা বা অন্যান্য তালিকা হতে পারে। সুতরাং ইনপুট যদি [[1, 1], 2, [1, 1]] এর মত হয়, তাহলে আউটপুট হবে [1, 1, 2, 1, 1]
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
আরম্ভ করার বিভাগে, এটি নেস্টেড তালিকা নেবে, এটি নিম্নরূপ কাজ করবে -
-
খালি তালিকা হিসাবে res সেট করুন, সূচক :=0, কল getVal(nestedList)
-
getVal() nestedIntegers নেবে, এটি −
হিসেবে কাজ করবে -
nestedIntegers
-এ i এর জন্য-
যদি আমি একটি পূর্ণসংখ্যা হয়, তাহলে res অ্যারেতে i ঢোকান, অন্যথায় getVal(i তালিকা) কল করুন
-
-
পরবর্তী() পদ্ধতিটি সূচী দ্বারা নির্দেশিত মান প্রদান করবে এবং সূচক 1
বৃদ্ধি করবে -
hasNext() সত্য ফিরে আসবে, যখন এর পাশে একটি উপাদান থাকবে, অন্যথায় মিথ্যা
উদাহরণ(পাইথন)
আরো ভালোভাবে বোঝার জন্য নিচের বাস্তবায়নটি দেখি -
class NestedIterator(object): def __init__(self, nestedList): self.res = [] self.index = 0 self.getVal(nestedList) #print(self.res) def getVal(self,NestedList): for item in NestedList: if isinstance(item, int): self.res.append(item) else: self.getVal(item) def next(self): self.index+=1 return self.res[self.index-1] def hasNext(self): if self.index == len(self.res): return False return True ob = NestedIterator([[1,1],2,[1,1]]) while ob.hasNext(): print(ob.next())
ইনপুট
[[1,1],2,[1,1]]
আউটপুট
1 1 2 1 1