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

पायथन में पाठ्यक्रम अनुसूची


मान लीजिए कि कुल संख्या पाठ्यक्रम हैं जिन्हें हमें लेना है, जिन्हें 0 से numCourses-1 तक लेबल किया गया है। कुछ पाठ्यक्रमों में पूर्वापेक्षाएँ हो सकती हैं, उदाहरण के लिए पाठ्यक्रम 0 लेने के लिए हमें पहले पाठ्यक्रम 1 लेना होगा, जिसे एक जोड़ी का उपयोग करके व्यक्त किया जाता है:[0,1]। मान लीजिए कि उपलब्ध कराए गए पाठ्यक्रमों की कुल संख्या और पूर्वापेक्षा जोड़े की एक सूची है, हमें यह जांचना होगा कि क्या आपके लिए सभी पाठ्यक्रमों को पूरा करना संभव है?

तो अगर इनपुट की तरह है - numCourses =2 और पूर्वापेक्षाएँ =[[1, 0]], तो परिणाम सही होगा, क्योंकि कुल 2 पाठ्यक्रम लेने हैं। कोर्स 1 लेने के लिए हमें कोर्स 0 पूरा करना चाहिए था। इसलिए यह संभव है।

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

  • मुख्य विधि में, यह numCourses, और पूर्वापेक्षाएँ लेगा:यह इस तरह कार्य करेगा -

  • यदि पूर्वापेक्षाओं में कोई प्रविष्टि नहीं है, तो सही लौटें

  • विज़िट नामक एक सरणी बनाएं, इसे 0 से भरें, और इसकी सीमा numCourses के समान है

  • adj_list :=पूर्वापेक्षाओं का उपयोग करके एक ग्राफ बनाएं

  • मेरे लिए 0 से numCourses की सीमा में

    • अगर विज़िट किया गया [i] गलत है, तो

      • यदि ग्राफ़ में विज़िट किए गए नोड के बीच कोई चक्र नहीं है, तो झूठी वापसी करें

  • सही लौटें

उदाहरण

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

class Solution(object):
   def canFinish(self, numCourses, prerequisites):
      if len(prerequisites) == 0:
         return True
      visited = [0 for i in range(numCourses)]
      adj_list = self.make_graph(prerequisites)
      for i in range(numCourses):
         if not visited[i]:
            if not self.cycle(adj_list,visited,i):
               return False
      return True
   def cycle(self,adj_list,visited,current_node = 0):
      if visited[current_node] ==-1:
         return False
      if visited[current_node] == 1:
         return True
      visited[current_node] = -1
      if(current_node in adj_list):
         for i in adj_list[current_node]:
            if not self.cycle(adj_list,visited,i):
               return False
      visited[current_node] = 1
      return True
   def make_graph(self,array):
      adj_list = {}
      for i in array:
         if i[1] in adj_list:
            adj_list[i[1]].append(i[0])
         else:
            adj_list[i[1]] = [i[0]]
      return adj_list
ob = Solution()
print(ob.canFinish(2, [[1,0]]))

इनपुट

2
[[1,0]]

आउटपुट

true

  1. पायथन में इवेंट शेड्यूलर

    पायथन हमें विशिष्ट समय पर कार्यों को चलाने के लिए एक सामान्य अनुसूचक देता है। हम शेड्यूल नामक मॉड्यूल का उपयोग करेंगे। इस मॉड्यूल में हम वांछित शेड्यूल प्राप्त करने के लिए प्रत्येक फ़ंक्शन का उपयोग करते हैं। नीचे हर फ़ंक्शन के साथ उपलब्ध सुविधाएँ दी गई हैं.. Synatx Schedule.every(n).[timeframe] Here

  1. पायथन में एकाधिक मान लौटाना?

    पायथन फ़ंक्शन कई मान लौटा सकते हैं। इन मानों को सीधे चर में संग्रहीत किया जा सकता है। एक फ़ंक्शन एक चर वापस करने के लिए प्रतिबंधित नहीं है, यह शून्य, एक, दो या अधिक मान लौटा सकता है। यह कई मानों/चरों को वापस करने के लिए पायथन की डिफ़ॉल्ट संपत्ति है जो सी ++ या जावा जैसी कई अन्य प्रोग्रामिंग भाषाओं

  1. हम पायथन में कई मान कैसे लौटाते हैं?

    किसी फ़ंक्शन से टपल, सूची, शब्दकोश या उपयोगकर्ता परिभाषित वर्ग के ऑब्जेक्ट के रूप में कई मान वापस करना संभव है टुपल के रूप में वापस लौटें >>> def function():       a=10; b=10       return a,b >>> x=function() >>> type(x) <class 'tuple