इस आधार से इनहेरिट कक्षाओं की एक सूची को देखते हुए:परिभाषित निर्भरताओं के अनुसार वस्तुओं को सॉर्ट करने के लिए एक क्लीन एल्गोरिदम?
class Plugin(object):
run_after_plugins =()
run_before_plugins =()
... और निम्नलिखित नियम:
- प्लगइन्स प्लगइन्स है कि वे के बाद चलाना चाहिए की एक सूची प्रदान कर सकते हैं।
- प्लगइन्स प्लगइन्स की एक सूची प्रदान कर सकते हैं जिन्हें उन्हें पहले चलाना चाहिए।
- प्लगइन की सूची बाधाओं को क्रम में निर्दिष्ट सभी प्लगइन हो सकती है या नहीं हो सकती है।
क्या कोई भी प्लगइन की सूची ऑर्डर करने के लिए एक अच्छा साफ एल्गोरिदम प्रदान कर सकता है? यह रूप में अच्छी तरह परिपत्र निर्भरता पता लगाने के लिए की आवश्यकता होगी ....
def order_plugins(plugins):
pass
मैं कुछ संस्करणों लेकिन ले कर आए हैं कुछ भी नहीं particuarlly साफ: मुझे यकीन है कि आप Art of Computer Programming प्रकार के कुछ चुनौती :)
पसंद करेंगे हूँ[ध्यान दें: प्रश्न पायथन में दी गई है, लेकिन यह स्पष्ट रूप से न केवल एक अजगर सवाल है: किसी भी भाषा में स्यूडोकोड करना होगा]
@Eli: मुझे यह प्रश्न मिला (http://stackoverflow.com/questions/952302/how-to-sort-based-on- निर्भरता) जिसने अभी इस तरह के प्रकार का उल्लेख किया लेकिन दिया गया उदाहरण नहीं था क्रमबद्ध करने के लिए दो अलग-अलग प्रकार की निर्भरताएं हैं: क्या इस मामले के साथ भी वह समझौता कर सकता है? – jkp
@jkp: इसे उस प्रस्तुति में परिवर्तित किया जा सकता है। यानी ए कहता है कि बी को इससे पहले भागना चाहिए, लेकिन उसके बाद सी। तो, केवल "बाद" बाधाओं के साथ, हम कहते हैं कि ए बी के बाद है, और सी ए –
@Eli के बाद है: हाहा! हां, मुझे लगता है कि जब आप इसे अपने सिर पर बदलते हैं तो यह साफ-सफाई पर लागू होता है। एक प्लगइन पर पहले बाधा एक दूसरे के लिए बाधा के बाद है :) – jkp