Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पायथन में एक परिवार में वंशानुक्रम क्रम का पता लगाने का कार्यक्रम

मान लीजिए, एक परिवार है जिसमें विभिन्न पीढ़ियों के सदस्य हैं। जैसे परिवार में एक पिता, उसके बच्चे और उनकी दादी हैं। लेकिन जन्म और मृत्यु प्रत्येक परिवार में होती है।

परिवार के सबसे बड़े सदस्य को मुखिया माना जाता है। इसलिए, जब 'प्रमुख' सदस्य की मृत्यु हो जाती है, तो उनका प्रत्यक्ष उत्तराधिकारी या उनके बच्चे मुखिया बन जाते हैं। हम तीन कार्यों को लागू करते हैं, पहले एक का उपयोग तब किया जाता है जब कोई बच्चा परिवार में पैदा होता है। फ़ंक्शन माता-पिता का नाम और बच्चे का नाम इनपुट के रूप में लेता है और उन्हें रिकॉर्ड में जोड़ता है।

दूसरे कार्य का उपयोग मृत्यु होने पर किया जाता है। यह मृतक परिवार के सदस्य का नाम इनपुट के रूप में लेता है और उन्हें रिकॉर्ड से हटा देता है।

तीसरा कार्य वंशानुक्रम का क्रम देता है। वंशानुक्रम का वर्तमान क्रम जब भी कहा जाता है, मुद्रित किया जाता है।

तो, इनपुट के एक सेट के लिए; हमें वंशानुक्रम के क्रम का पता लगाना होगा। इसलिए, यदि इनपुट का क्रम जन्म, जन्म, जन्म, जन्म, जन्म, मृत्यु, विरासत, मृत्यु, विरासत की तरह है, तो आउटपुट ['ज़ैक', 'जेसी' होगा। , 'उर्सुला', 'रयान', 'थिया'] ['जेसी', 'उर्सुला', 'रयान', 'थिया']

सबसे पहले परिवार का मुखिया पॉल होता है।

तब पॉल के क्रमशः जैच और जेसी नाम के बच्चे हुए।

तब यिशै के तीन बच्चे हुए; उर्सुला, रयान और थिया, उर्सुला सबसे बड़ी और थिया सबसे छोटी हैं।

तब पॉल मर जाता है। वंशानुक्रम का क्रम ['ज़ाच', 'जेसी', 'उर्सुला', 'रयान', 'थिया'] है।

फिर ज़च मर जाता है, विरासत का क्रम बन जाता है ['जेसी', 'उर्सुला', 'रयान', 'थिया']।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • परिवार :=एक नया नक्शा जिसमें मान के रूप में सूचियाँ शामिल हैं

  • मुखिया :=परिवार का वर्तमान मुखिया

  • मृत :=एक सेट

  • जन्म () फ़ंक्शन को परिभाषित करें। इसमें p_name, c_name

    . लगेगा
    • परिवार के अंत में c_name डालें[p_name]

  • फ़ंक्शन डेथ () को परिभाषित करें। यह नाम लेगा

    • (नाम) सेट डेड में जोड़ें

  • फ़ंक्शन इनहेरिटेंस () को परिभाषित करें। इसमें लगेगा

    • उत्तर :=एक नई सूची

    • गहराई_खोज(सिर)

    • वापसी उत्तर

  • एक फ़ंक्शन को परिभाषित करें गहराई_खोज() । इसमें करंट लगेगा

    • अगर करंट डेड नहीं है, तो

      • उत्तर के अंत में करंट डालें

    • परिवार में प्रत्येक बच्चे के लिए[वर्तमान], करें

      • गहराई_खोज(बच्चा)

उदाहरण

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें

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']

  1. यह पता लगाने के लिए कार्यक्रम कि क्या पायथन में सभी के द्वारा ग्राफ़ को ट्रैवर्स किया जा सकता है

    मान लीजिए, हमें एक ग्राफ दिया गया है जिसमें n शीर्षों की संख्या 0 से n - 1 है। ग्राफ अप्रत्यक्ष है और प्रत्येक किनारे का वजन है। ग्राफ में तीन प्रकार के भार हो सकते हैं और प्रत्येक भार एक विशेष कार्य को दर्शाता है। दो लोग हैं जो ग्राफ को पार कर सकते हैं, अर्थात् जैक और केसी। जैक ग्राफ को पार कर सकता

  1. पायथन प्रोग्राम में एक मैट्रिक्स के स्थानान्तरण का पता लगाएं

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक मैट्रिक्स दिया गया है, हमें मैट्रिक्स के ट्रांसपोज़ को प्रदर्शित करने की आवश्यकता है। A[i][j] पर मौजूद मान को A[j][i] से बदलकर एक मैट्रिक्स का स्थानान्तरण प्राप्त किया जाता है। आइए अब नीचे दिए गए कार्यान्वय

  1. पायथन प्रोग्राम में सरणी का योग ज्ञात करें

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक सरणी दी गई है, जिसकी हमें सरणी के योग की गणना करने की आवश्यकता है। योग प्राप्त करने के लिए प्रत्येक अनुक्रमणिका में संपूर्ण सरणी और तत्व को पार करने के लिए पाशविक-बल दृष्टिकोण की चर्चा नीचे प्रत्येक अनुक्रमण