মান লিজিয়ে একটি পরিবার আছে যাতে বিভিন্ন প্রজন্মের সদস্য রয়েছে। যেমন পিতা, তাঁর সন্তানরা, এবং তাদের দাদি/নানি। কিন্তু প্রতিটি পরিবারে জন্ম ও মৃত্যু ঘটে। পরিবারের বয়স্ক সদস্যকে প্রধান বিবেচনা করা হয়। তাই, যখন 'প্রধান' সদস্য মারা যান, তাঁর সরাসরি উত্তরাধিকারী বা তাদের সন্তানই প্রধান হয়। আমরা তিনটি ফাংশন ইমপ্লিমেন্ট করব: প্রথমটি যখন পরিবারে একটি শিশু জন্মে। এটি প্যারেন্টের নাম এবং শিশুর নাম ইনপুট নেয় এবং রেকর্ডে যোগ করে। দ্বিতীয় ফাংশন যখন মৃত্যু ঘটে। এটি মরনশীল সদস্যের নাম ইনপুট নেয় এবং রেকর্ড থেকে বাদ দেয়। তৃতীয় ফাংশন উত্তরাধিকার ক্রম দেয়। বর্তমান উত্তরাধিকার ক্রমটি প্রিন্ট করে যখন ডাকা হয়।
যেমন, ইনপুটের ক্রম হলে: birth, birth, birth, birth, birth, death, inheritance, death, inheritance, তবে আউটপুট হবে: ['Zach', 'Jesse', 'Ursula', 'Ryan', 'Thea'] এবং ['Jesse', 'Ursula', 'Ryan', 'Thea']।
প্রথমে পরিবারের প্রধান হল Paul। তারপর Paul-এর সন্তান হল Zach এবং Jesse। Jesse-এর তিনটি সন্তান: Ursula, Ryan, Thea (Ursula বড়, Thea ছোট)। তারপর Paul মারা যান। উত্তরাধিকার ক্রম: ['Zach', 'Jesse', 'Ursula', 'Ryan', 'Thea']। তারপর Zach মারা যান, ক্রম হয়: ['Jesse', 'Ursula', 'Ryan', 'Thea']।
সমাধানের ধাপসমূহ
family := ডিফল্টডিক্ট(লিস্ট)head := বর্তমান প্রধানdead := সেটbirth(p_name, c_name):family[p_name].append(c_name)death(name):dead.add(name)inheritance():ans := [],depth_search(head),return ansdepth_search(current): যদিcurrent not in deadহয়, তবেans.append(current); প্রতিটিchild in family[current]এর জন্যdepth_search(child)।
উদাহরণ
নিচের ইমপ্লিমেন্টেশনটি দেখুন:
from collections import defaultdict
class Solution:
def __init__(self, head_name):
self.family = defaultdict(list)
self.head = head_name
self.dead = set()
def birth(self, p_name, c_name):
self.family[p_name].append(c_name)
def death(self, name):
self.dead.add(name)
def inheritance(self):
self.ans = []
self.depth_search(self.head)
return self.ans
def depth_search(self, current):
if current not in self.dead:
self.ans.append(current)
for child in self.family[current]:
self.depth_search(child)
ob = Solution('Paul')
ob.birth('Paul', 'Zach')
ob.birth('Paul', 'Jesse')
ob.birth('Jesse', 'Ursula')
ob.birth('Jesse', 'Ryan')
ob.birth('Jesse', 'Thea')
ob.death('Paul')
print(ob.inheritance())
ob.death('Zach')
print(ob.inheritance())ইনপুট
ob = Solution('Paul') ob.birth('Paul', 'Zach') ob.birth('Paul', 'Jesse') ob.birth('Jesse', 'Ursula') ob.birth('Jesse', 'Ryan') ob.birth('Jesse', 'Thea') ob.death('Paul') print(ob.inheritance()) ob.death('Zach') print(ob.inheritance())আউটপুট
['Zach', 'Jesse', 'Ursula', 'Ryan', 'Thea'] ['Jesse', 'Ursula', 'Ryan', 'Thea']