जब किसी स्ट्रिंग के सभी क्रमपरिवर्तनों को लेक्सिकोग्राफ़िक क्रम में रिकर्सन का उपयोग किए बिना प्रिंट करना आवश्यक होता है, तो एक विधि परिभाषित की जाती है, जो स्ट्रिंग को पैरामीटर के रूप में लेती है। यह स्ट्रिंग तत्वों पर पुनरावृति करने के लिए एक सरल 'फॉर' लूप का उपयोग करता है और कुछ बाधाओं की जांच के लिए 'जबकि' स्थिति का उपयोग करता है।
नीचे उसी का प्रदर्शन है -
उदाहरण
from math import factorial def lex_permutation(my_string): for i in range(factorial(len(my_string))): print(''.join(my_string)) i = len(my_string) - 1 while i > 0 and my_string[i-1] > my_string[i]: i -= 1 my_string[i:] = reversed(my_string[i:]) if i > 0: q = i while my_string[i-1] > my_string[q]: q += 1 temp_variable = my_string[i-1] my_string[i-1]= my_string[q] my_string[q]= temp_variable my_string = 'bhd' print("The string is ") print(my_string) my_string = list(my_string) print("The string is being sorted") my_string.sort() lex_permutation(my_string)
आउटपुट
The string is bhd The string is being sorted bdh bhd dbh dhb hbd hdb
स्पष्टीकरण
-
आवश्यक पैकेज आयात किए जाते हैं।
-
'lex_permutation' नाम की एक विधि परिभाषित की गई है जो स्ट्रिंग को एक पैरामीटर के रूप में लेती है।
-
यह फ़ैक्टोरियल विधि का उपयोग करता है और स्ट्रिंग के फ़ैक्टोरियल के माध्यम से पुनरावृति करता है।
-
उल्टे स्ट्रिंग और मूल स्ट्रिंग की तुलना की जाती है।
-
एक साधारण अदला-बदली की जाती है।
-
विधि के बाहर, स्ट्रिंग को परिभाषित किया जाता है, और कंसोल पर प्रदर्शित किया जाता है।
-
फिर इसे क्रमबद्ध किया जाता है।
-
इस स्ट्रिंग को पास करके मेथड को कॉल किया जाता है।
-
आउटपुट कंसोल पर प्रदर्शित होता है।