मैंने किसी चीज़ obj
और कार्योंएक वस्तु को देखते हुए कार्यों कि विशेषताओं को बदलने की विशेषताओं के "बंद" कम्प्यूटिंग
def func1(obj):
#...
def func2(obj):
#...
def func3(obj):
#...
कि प्रत्येक obj
की विशेषताओं के मूल्यों को बदल की एक संख्या है।
मैं अपने इनपुट होना चाहता हूँ कुछ
obj = MyObject()
obj.attr=22
यह एक समारोह closure()
कि उपरोक्त कार्यों के सभी संभव applictions गणना करने के लिए पारित किया जाना चाहिए, func1(func2(obj))
, func3(func1(func1(obj)))
आदि अर्थ एक निश्चित रोक हालत अप करने के लिए (जैसे उदाहरण के लिए 20 से अधिक फ़ंक्शन रचनाएं नहीं)।
आउटपुट सभी संभावित आउटपुट की एक सूची होनी चाहिए जिसमें सभी पथ मौजूद हैं। तो अगर 104
और 93
obj.attr=22
पर एक संभावित अंतिम आउटपुट हैं, और 104
पर पहुंचने के दो तरीके हैं और एक 93
पर पहुंचने के दो तरीके हैं। तब
print closure(obj)
[22, 64, 21, 104] #first path to 104 through , func1(obj),func1(func1(obj)), func1(func1(func3(obj)))
[22, 73, 104] #second path to 104 through , func3(obj),func3(func2(obj)),
[22, 11, 93] #the only path to arrive at 94
की तरह कुछ होना चाहिए मैं यह कैसे लागू कर सकता है? टिप्पणियों में सुझाव दिया गया था, यह पेड़ों के साथ सबसे अच्छा किया जाता है, लेकिन हालांकि मैंने 2 दिनों की कोशिश की, मैंने लगभग कोई प्रगति नहीं की है कि मैं इसे लागू कर रहा हूं (मैं पाइथन/प्रोग्रामिंग के लिए नया हूं)!
मेरा उदाहरण इतना आसान है कि func(obj)
के बजाय हम सीधे func(22)
का उपयोग कर सकते हैं, लेकिन जिस उदाहरण पर मुझे काम करने की आवश्यकता है, वह अधिक जटिल है, जहां मुझे निश्चित रूप से वस्तुओं का उपयोग करने की आवश्यकता होगी, इसलिए यह केवल इसके लिए एक न्यूनतम कार्य उदाहरण होगा।
पेड़ शायद एक पूर्ण एन-आरी पेड़ नहीं होगा, क्योंकि प्रत्येक फ़ंक्शन एप्लिकेशन में एक परीक्षण होगा जिसमें इसे obj
की वर्तमान स्थिति (विशेषताओं के) पर लागू किया जा सकता है और कुछ मामलों में परीक्षण छोड़ने में विफल रहेगा (के गुण) obj
अपरिवर्तित।
ऐसा लगता है कि आप एक वृक्ष संरचना चाहते हैं जहां प्रत्येक नोड एक राज्य है और शाखाओं द्वारा कार्य किया जाता है (प्रत्येक कार्य एक राज्य लेता है और ** नया ** नोड/राज्य बनाता है)। एआई और अन्य क्षेत्रों में यह सामान्य प्रथा है और यहां उपयोगी हो सकती है। एक बार जब आप आवश्यक राज्य तक पहुंचे तो पता लगाने के लिए बस रूट पर वापस जाएं। ओह, और यदि संभव हो तो इसे बीएफएस बनाएं :) –
@ReutSharabani हां, ऐसा लगता है कि मुझे लगता है कि मैं सोचता हूं, thx। लेकिन हालांकि बीएफएस का उपयोग क्यों करें? – user47574
ठीक है, यदि आप डीएफएस का उपयोग करते हैं और आपके पास फ़ंक्शंस का एक अनंत अनुप्रयोग पथ है ... यदि कोई "समाधान" है तो भी आपको कुछ भी सार्थक नहीं मिल रहा है। हालांकि, यदि कोई समाधान है, तो डीएफएस इसे खोजने की गारंटी देता है (लेकिन आप स्मृति में भुगतान करते हैं, डीएफएस के विपरीत जो निरंतर स्मृति है)। आप इसे रोकने के लिए पुनरावर्तक डीएफएस (इसे Google) भी उपयोग कर सकते हैं। –