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

पायथन में कोर्स शेड्यूल


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

इसलिए यदि इनपुट numCourses = 2 और prerequisites = [[1, 0]] जैसा है, तो परिणाम true होगा, क्योंकि लेने के लिए कुल 2 कोर्स हैं। कोर्स 1 लेने के लिए हमें कोर्स 0 खत्म करना चाहिए। तो यह संभव है।

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

  • मुख्य मेथड में, यह numCourses, और prerequisites लेगा: यह इस तरह कार्य करेगा -

  • यदि prerequisites में कोई एंट्री नहीं है, तो true लौटाएं

  • visited नामक एक ऐरे बनाएं, इसे 0 से भरें, और इसकी रेंज numCourses के समान है

  • adj_list := prerequisites का उपयोग करके ग्राफ बनाएं

  • i को 0 से numCourses तक रेंज में

    • यदि visited[i] false है, तो

      • यदि विजिटेड नोड्स में ग्राफ में कोई साइकिल नहीं है, तो false लौटाएं

  • true लौटाएं

उदाहरण

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

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. - Python में इवेंट शेड्यूलर

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

  1. - पायथन में एकाधिक मान वापस करना

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

  1. - Python में एकाधिक मान कैसे लौटाएं?

    टपल, लिस्ट, डिक्शनरी या यूजर डिफाइंड क्लास के ऑब्जेक्ट के रूप में फंक्शन से एकाधिक मान लौटाना संभव है। टपल के रूप में लौटाएं >>> def function(): ... a = 10; b = 10 ... return a, b >>> x = function() >>> type(x) >>> x (10, 10) >>> x, y = function