जब रिकर्सन का उपयोग करते हुए एक स्ट्रिंग के सभी क्रमपरिवर्तन को लेक्सिकोग्राफिक क्रम में प्रिंट करने की आवश्यकता होती है, तो एक विधि परिभाषित की जाती है, जो तत्वों के अनुक्रम पर पुनरावृति करने के लिए 'फॉर' लूप का उपयोग करती है, और तत्वों में शामिल होने के लिए 'जॉइन' विधि का उपयोग करती है।
नीचे उसी का प्रदर्शन है -
उदाहरण
from math import factorial
def lexicographic_permutation_order(s):
my_sequence = list(s)
for _ in range(factorial(len(my_sequence))):
print(''.join(my_sequence))
next = next_in_permutation(my_sequence)
if next is None:
my_sequence.reverse()
else:
my_sequence = next
def next_in_permutation(my_sequence):
if len(my_sequence) == 0:
return None
next = next_in_permutation(my_sequence[1:])
if next is None:
my_sequence[1:] = reversed(my_sequence[1:])
q = 1
while q < len(my_sequence) and my_sequence[0] > my_sequence[q]:
q += 1
if q == len(my_sequence):
return None
my_sequence[0], my_sequence[q] = my_sequence[q], my_sequence[0]
return my_sequence
else:
return [my_sequence[0]] + next
my_input = input('Enter a string : ')
print("The string is :")
print(my_input)
print("The method is being called...")
lexicographic_permutation_order(my_input) आउटपुट
Enter a string : hey The string is : hey The method is being called... hey hye yeh yhe hey hye
स्पष्टीकरण
-
आवश्यक पैकेज आयात किए जाते हैं।
-
'lexicographic_permutation_order' नाम की एक विधि परिभाषित की गई है जो तत्वों के शब्दावली क्रम को खोजने में मदद करती है।
-
विधि 'next_in_permutation' स्ट्रिंग में अगले क्रमपरिवर्तन को निर्धारित करने में मदद करती है।
-
उपयोगकर्ता द्वारा एक स्ट्रिंग दर्ज की जाती है, और कंसोल पर प्रदर्शित होती है।
-
इस स्ट्रिंग को पैरामीटर के रूप में पास करके विधि को कॉल किया जाता है।
-
आउटपुट कंसोल पर प्रदर्शित होता है।