मान लीजिए हमारे पास एक स्ट्रिंग s और एक संख्या r है। हमें s में r संख्या के वर्णों के सभी क्रमपरिवर्तन प्रदर्शित करने हैं। सभी क्रमपरिवर्तन प्राप्त करने के लिए हमारे पास permutations() फंक्शन है। यह फंक्शन itertools लाइब्रेरी के अंदर मौजूद है।
उदाहरण के लिए, यदि इनपुट s = "HELLO" r = 3 है, तो आउटपुट होगा:
['HEL', 'HEL', 'HEO', 'HLE', 'HLL', 'HLO', 'HLE', 'HLL', 'HLO', 'HOE', 'HOL', 'HOL', 'EHL', 'EHL', 'EHO', 'ELH', 'ELL', 'ELO', 'ELH', 'ELL', 'ELO', 'EOH', 'EOL', 'EOL', 'LHE', 'LHL', 'LHO', 'LEH', 'LEL', 'LEO', 'LLH', 'LLE', 'LLO', 'LOH', 'LOE', 'LOL', 'LHE', 'LHL', 'LHO', 'LEH', 'LEL', 'LEO', 'LLH', 'LLE', 'LLO', 'LOH', 'LOE', 'LOL', 'OHE', 'OHL', 'OHL', 'OEH', 'OEL', 'OEL', 'OLH', 'OLE', 'OLL', 'OLH', 'OLE', 'OLL']
समाधान दृष्टिकोण
इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे:
- vals := s से आकार r के सभी क्रमपरिवर्तनों वाली सूची
- res := एक नई सूची
- vals में प्रत्येक x के लिए, करें
- वर्णों की सूची x को स्ट्रिंग में बदलें और res में डालें
- res लौटाएं
उदाहरण
बेहतर समझ के लिए निम्न कार्यान्वयन देखें:
from itertools import permutations
def solve(s, r):
vals = list(permutations(s, r))
res = []
for x in vals:
res.append(''.join(x))
return res
s = "HELLO"
r = 3
print(solve(s, r))इनपुट
"HELLO", 2
आउटपुट
['HEL', 'HEL', 'HEO', 'HLE', 'HLL', 'HLO', 'HLE', 'HLL', 'HLO', 'HOE', 'HOL', 'HOL', 'EHL', 'EHL', 'EHO', 'ELH', 'ELL', 'ELO', 'ELH', 'ELL', 'ELO', 'EOH', 'EOL', 'EOL', 'LHE', 'LHL', 'LHO', 'LEH', 'LEL', 'LEO', 'LLH', 'LLE', 'LLO', 'LOH', 'LOE', 'LOL', 'LHE', 'LHL', 'LHO', 'LEH', 'LEL', 'LEO', 'LLH', 'LLE', 'LLO', 'LOH', 'LOE', 'LOL', 'OHE', 'OHL', 'OHL', 'OEH', 'OEL', 'OEL', 'OLH', 'OLE', 'OLL', 'OLH', 'OLE', 'OLL']